Laravel 10 SPA密码重置返回passwords.token错误求助
CSRF令牌校验问题
SPA环境下,Laravel默认要求POST请求携带X-XSRF-TOKEN请求头。前端需要从Cookie中读取XSRF-TOKEN值,然后在请求/reset-password时将其放到请求头里。另外别把/reset-password加入VerifyCsrfToken中间件的$except数组,密码重置接口需要CSRF保护;如果用了Sanctum做SPA认证,要确保config/cors.php中supports_credentials设为true,且前端请求开启withCredentials。令牌传递格式错误
确认POST请求体中包含完整的token字段,这个值要和GET/reset-password/{token}获取到的明文令牌完全一致,不能有编码或截断。注意password_reset_tokens表中存储的是令牌的哈希值,你传递的必须是明文令牌,Laravel会自动做哈希比对。令牌与邮箱不匹配/过期
检查POST请求中的email和触发忘记密码时的邮箱完全一致(大小写、空格都要匹配),Laravel会同时校验令牌和邮箱的对应关系。另外查看config/auth.php里passwords.users.expire配置,默认60分钟,确认请求时令牌未过期。路由与控制器逻辑问题
确认POST/reset-password路由正确指向Auth\NewPasswordController的store方法。如果自定义了控制器,检查是否正确调用Password::reset()方法,参数是否传递正确,有没有误改令牌验证逻辑。
内容的提问来源于stack exchange,提问作者Wonderpix

