【问题标题】:Laravel Passport - /oauth/token generates invalid tokenLaravel Passport - /oauth/token 生成无效令牌
【发布时间】:2019-07-27 02:41:44
【问题描述】:

所以我使用php artisan passport:client 创建了一个客户端,当我向 oauth/token 发出 POST 请求时,幸运的是我取回了一个令牌。

但是,当我尝试通过将它放在我的标头中并转到 auth:api 受保护的路由来使用该令牌时,我得到 401 未授权。

不过,使用不同的登录路径似乎可行。当我在我的 api 控制器中使用此路由时:

Route::post('/login', 'Auth\LoginController@login')->name('login');

代码如下:

public function login(Request $request) {
    $input = $request->all();

    if (Auth::attempt(['email' => $input['email'], 'password' => $input['password'] ])) {
        $user = Auth::user();

        return [
            'success' => true,
            'token' => $user->createToken('test')->accessToken
        ];
    }

    return [
        'success' => false,
        'message' => 'unable to authenticate'
    ];
}

我取回了一个适用于受保护路由的令牌。

我正在使用 Postman 进行测试,我有标题 Authorization: Bearer <token>Accept: application/json。不知道为什么它以一种方式工作而不是另一种。

编辑:这是受保护的路线:

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

使用:

'api' => [
    'driver' => 'passport',
    'provider' => 'users',
],

【问题讨论】:

  • 你们api中间件包含什么?
  • 我更新了我的问题
  • 你检查返回的token是否存在于数据库中?此外,您传入了一个空范围,这也可能会影响事情。
  • 确实如此,但我注意到该令牌的 user_id 列为空。但是,我用来进行身份验证的客户端有一个与之关联的 user_id
  • 您刚刚回答了自己的问题,您需要弄清楚为什么 user_id 没有设置好。

标签: php laravel laravel-passport


【解决方案1】:

在我的例子中,从 WHM 服务器和函数中删除 Lsapi 组件。

【讨论】:

  • 感谢您的贡献。请添加上下文,并解释为什么这可以作为解决方案。如果这样做有意义,还请解释如何执行此操作。照原样,您的回复作为对 OP 的评论可能更有用,并且根据 SO 指南可能不被视为完整和正确的答案。一个有用的答案将是一个独立的解决方案,让未来的访问者有更多的知识可以应用于他们自己的情况。质量信息丰富的答案更有可能被投票,同时低质量的答案可能会被下载或完全删除。
猜你喜欢
  • 2019-03-24
  • 2021-03-14
  • 2016-08-31
  • 2021-01-13
  • 2019-02-03
  • 2017-07-25
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多