Laravel+InertiaJS+React登录时419页面过期问题求助
419 Page Expired 错误排查(Laravel 10.4 + InertiaJS 1.0 + React 18.2)
我已查阅所有相关问题与解答,但仍未解决问题。提交登录凭证时持续出现419 Page Expired错误,推测是CSRF相关问题。
环境配置
初始Session驱动为database,现已改为file,.env配置如下:
SESSION_DRIVER=file
根据文档说明,Laravel通过Inertia或Axios请求时会自动携带正确CSRF Token,且需移除csrf-token meta标签以避免Token无法正常刷新,但仍未解决问题。
已尝试的解决方法
- 在Kernel.php的
$middlewareGroups中移除StartSession、ShareErrorsFromSession中间件 - 在app.blade.php中添加
<meta name="csrf-token" content="{{ csrf_token() }}">,并在表单JSX中添加<input type="hidden" name="_token" value="{{ csrf_token() }}" /> - 手动在表单中注入csrf_token:
const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); const form = useForm({ email: '', password: '', _token: token, });
登录组件核心代码(精简版)
const form = useForm({ email: '', password: '', }); function login(e) { e.preventDefault(); form.post(route('login'), { onFinish: () => { form.reset('password'); }, }); } // ... return ( <div> {/* 邮箱输入框 */} {/* 密码输入框 */} <Button onClick={login}> Log in </Button> </div> )
所有尝试均无效,仍出现419错误,请问还有其他可行的解决方法吗?
内容的提问来源于stack exchange,提问作者matt
相关产品推荐
相关产品推荐

