Laravel Sanctum和 Postman 的POST请求问题

unftdfkk  于 2022-11-07  发布在  Postman
关注(0)|答案(3)|浏览(286)

我有一个问题与Sanctum和 Postman 这是有关此职位:Sanctum和Postman的SPA身份验证问题
我遵循了Laravel文档中关于Sanctum的所有内容,并正确地配置了它。然后我遵循了以下教程:https://blog.codecourse.com/laravel-sanctum-airlock-with-postman/
除了POST请求外,其他都正常。当我登录时,它正常工作。但是我有一个没有预请求脚本的集合,当我向/user发出GET请求时,它将返回登录的用户。
但是,当我在Laravel和Postman中将方法更改为POST时,我将收到CSRF标记不匹配错误。
有人知道我必须做什么,使POST请求工作吗?

Route::middleware('auth:sanctum')->post('/user', function (Request $request) {
    return $request->user();
});

798qvoo8

798qvoo81#

我一直在我的一个电子商务API中使用sanctum,我也遵循了你在问题中链接的同一个教程。很难说在你的例子中实际的问题是什么,但看起来你没有在你的POST请求中发送X-XSRF-TOKEN头。
在上面提到的教程的最后一段,作者展示了如何击中/logout路线,这是一个POST路线。

wr98u20j

wr98u20j2#

在控制器中删除此功能

public function __construct()
{
    $this->middleware('auth');
}

或将其更改为

public function __construct()
{
    $this->middleware('auth:sanctum');
}

此外,检查您的RouteServiceProvider并将API路径更改为

Route::prefix('api/v1')
    ->middleware('auth:sanctum')
    ->namespace($this->namespace)
    ->group(base_path('routes/api.php'));
m0rkklqb

m0rkklqb3#

csrf_token用于在laravel中验证具有方法POST表单,并且动态创建标记,您可以执行以下两项操作
如果你正在写api,首先你需要使用https://<base_url>/apiroutes/api.php中的路由,在那里你不需要csrf_token,但是确保使用正确的api认证
其次,在测试postman之前,只需禁用这些路由的csrf令牌,一旦测试成功,即可再次启用,它将提供安全性
像这样禁用

<?php namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
  protected $except = [
    'submitMyForm/*',
  ];
}

相关问题