Laravel Sanctum未设置XSRF-cookie仍接受请求问题咨询
API路由默认不启用CSRF校验:Laravel的
routes/api.php内的路由默认归属api中间件组,这个组并未包含VerifyCsrfToken中间件。只有routes/web.php中的路由才会自动应用CSRF校验逻辑,所以直接调用API路由下的注册接口,本身就不需要CSRF令牌。Sanctum的CSRF cookie仅针对Session认证场景:当使用Sanctum的SPA认证模式时(即前端通过浏览器与后端共享Cookie、用Session维持登录状态),才需要先调用
/sanctum/csrf-cookie获取CSRF令牌——因为此时请求会携带Session Cookie,后端会触发CSRF校验。但如果你的注册接口是基于无状态Token认证(比如注册后返回API Token,后续请求用Token而非Cookie),或是单纯的匿名注册接口,根本没用到Session,自然不需要CSRF校验。注册接口属于匿名可访问范畴:如果你的注册路由没有添加
auth:sanctum中间件,那它就是公开接口,Sanctum不会对这类未认证接口强制要求CSRF校验。只有当接口需要用户通过Session认证访问时,才会触发CSRF校验逻辑。
举个典型的示例,若你的routes/api.php里的注册路由是这样的:
Route::post('/register', [UserController::class, 'register']);
该路由未附加任何认证中间件,属于完全公开的接口,只要请求参数符合要求,无论是否携带CSRF令牌都能执行成功。
内容的提问来源于stack exchange,提问作者Ayman Eid
相关产品推荐
相关产品推荐

