You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel注册接口出现419 Page Expired错误求助

问题分析与解决

一、419 Page Expired错误的原因及解决

419错误本质是Laravel的CSRF令牌验证失败,但你的路由使用了api/v1前缀,正常情况下API路由不会强制要求CSRF令牌,出现这个问题的核心原因大概率是:

  • 你把这条API路由写在了routes/web.php文件中,而web.php里的路由默认受web中间件组管控,该组包含VerifyCsrfToken中间件,会验证CSRF令牌;
  • 若你是在routes/api.php中定义的路由,但手动给路由添加了web中间件,也会触发CSRF验证。

解决方法:

  1. 将API路由移至routes/api.php:Laravel默认对routes/api.php中的路由应用api中间件组,该组不包含CSRF验证逻辑,无需额外处理令牌。
  2. 若必须在web.php中定义API路由:可以在app/Http/Middleware/VerifyCsrfToken.php的$except数组中添加该路由,跳过CSRF验证:
protected $except = [
    'api/v1/signup',
];

二、代码中的语法错误

你的signup方法里,$request->validate()存在语法错误:数组闭合后缺少了括号,正确写法如下:

$data = $request->validate([
    'first_name' => 'required',
    'last_name' => 'required',
    'email' => 'required',
    'password' => 'required|min:5|confirmed',
    'password_confirmation' => 'required',
]); // 此处补全闭合括号

这个语法错误会导致请求执行时抛出异常,修复后才能正常执行用户创建逻辑。

三、额外优化建议

  • email字段建议添加email和unique验证规则,确保输入合法且不重复:'email' => 'required|email|unique:users';
  • 确保User模型的$fillable属性包含first_name、last_name、email、password字段,否则User::create($data)会因为批量赋值限制失败:
protected $fillable = ['first_name', 'last_name', 'email', 'password'];

内容的提问来源于stack exchange,提问作者user20597340

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:45:28