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

Laravel Fortify第三方前端JSON注册遇CSRF匹配错误解决方案咨询

解决Fortify适配第三方前端的CSRF问题

针对你遇到的Fortify注册路由CSRF校验问题,不用把路由加入VerifyCsrfToken的except数组,有以下几种可行方案:

方案1:让第三方客户端先获取CSRF Token再发起请求

Laravel自带了/csrf-cookie路由,专门用于获取CSRF Token的Cookie。第三方客户端(比如移动端)可以先发送一个GET请求到该路由,服务器会返回包含XSRF-TOKEN的Cookie。之后在发送/register请求时,在请求头中添加X-XSRF-TOKEN,值为Cookie中的XSRF-TOKEN内容即可通过CSRF校验。

用Postman测试的话,步骤是:

  1. 发送GET请求到http://localhost:8000/csrf-cookie,响应会设置XSRF-TOKEN Cookie;
  2. 在POST /register的请求头中添加X-XSRF-TOKEN,值取刚才的Cookie内容,再发送请求就能正常通过。

方案2:修改Fortify默认路由的中间件组

在config/fortify.php配置文件中,找到middleware配置项,默认值是web,将其改为api:

'middleware' => 'api',

这样Fortify的所有路由都会使用api中间件组,而api中间件组默认不包含VerifyCsrfToken中间件,自然就不会触发CSRF校验。

需要注意的是,api中间件组默认包含throttle:api和bindings,如果需要额外的中间件,可以自行调整。另外,使用api中间件组后,会话机制和web端不同,但注册登录流程不受影响。

方案3:手动注册Fortify路由并指定中间件

如果你不想修改全局的Fortify中间件配置,可以在routes/api.php中手动注册注册路由,指定使用api相关的中间件:

use Laravel\Fortify\Http\Controllers\RegisteredUserController;

Route::post('/register', [RegisteredUserController::class, 'store'])
    ->middleware(['guest:api']);

这样这个注册路由就归属于api路由组,不会受到CSRF校验的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:40:23