首页 > 解决方案 > Laravel sanctum API 令牌认证失败

问题描述

我正在使用 Laravel sanctum 创建可用于验证 API 请求的 API 令牌,但是当我创建令牌并使用纯文本令牌来验证来自邮递员的请求时,总是给我 401。

这是我的终点:

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

我生成这样的令牌:

$user = $request->user();
        $abilities = [];

        if ($request->read) $abilities[] = 'data:read';
        if ($request->write) $abilities[] = 'data:write';

        $token = $user->createToken($request->name, $abilities);

        return response([
            'token' => $token->plainTextToken,
            'tokens' => $user->tokens
        ],201);

我确实得到了回文令牌,但是当我在邮递员中使用它时它失败了

Bearer 118586|IgKEMCTQq85Lb6k1km6HrewBo3wUS23OuTNHj13i

我在我的 API 组中使用这个中间件

EnsureFrontendRequestsAreStateful::class

我把它关掉了,但没有任何改变。

有人能帮忙吗?

标签: laravellaravel-7

解决方案


对于遇到此问题的任何人,您必须将 api 驱动程序从token更改sanctumconfig/auth.php guards => api => driver

'guards' => [

    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],

],

推荐阅读