Laravel Sanctum CSRF对未受保护的路由返回419



我有一个SPA应用程序,我试图实现Sanctum的CSRF保护。

从文档:

验证您的SPA,您的SPA的"登录";页面应该首先向/sanctum/CSRF -cookie端点发出请求,为应用程序初始化CSRF保护

现在我在登录前请求CSRF令牌

axios.get('/sanctum/csrf-cookie').then(response => {
// Login...
});

我应该请求CSRF令牌之前做任何post请求在我的应用程序?如果是,我基本上需要在POST api/password_reset,POST api/tracking,POST api/register等路由之前请求CSRF令牌。

或者有任何方法告诉Laravel Sanctum只返回419CSRF token mismatch错误为受保护的路由,即。路由与auth:sanctum中间件?

编辑:

只是想说清楚,我对CSRF的实现一般没有问题。在我请求CSRF令牌后,它工作得很好。Axios将在所有后续请求中添加令牌。我的问题实际上是关于何时对CSRF令牌进行第一个请求。

我已经搜索了类似的东西,我偶然发现了这个;Laravel:如何使用方法

在某些路由上避免TokenMismatchException CSRF Token因此,您可以通过在app/Http/Middleware/VerifyCsrfToken.phpVerifyCsrfToken类中添加$except数组中的路由路径来排除对CSRF令牌的检查,如下所示;

protected $except = [
'/api/password_reset',
'/api/tracking',
'/api/register',
];

这也可以在Laravel官方文档中看到,从CSRF保护中排除uri

相关内容

  • 没有找到相关文章

最新更新