不断收到 401 未经授权的“无效凭据”Laravel Passport

Posted

技术标签:

【中文标题】不断收到 401 未经授权的“无效凭据”Laravel Passport【英文标题】:Keep getting 401 unauthorized 'invalid credentials' Laravel Passport 【发布时间】:2018-04-12 16:49:16 【问题描述】:

我已经通过播种机生成了一些演示用户。我可以通过 oauth/token 登录这些用户。但是当我创建新用户时。我不能再登录了。它总是给我 401 未经授权的“无效凭据”。我做了所有的研究。我正在通过邮递员进行测试,我完全一无所知。这是我的注册方法:

$user = new User;
$user->name = ucfirst($request['name']);
$user->email = $request['email'];
$user->password = bcrypt($request['password']);
$user->save();
return response()->json('success'); 

这是在 Laravel 护照提供的 oauth/token 路由中发布时执行的方法:

public function issueToken(ServerRequestInterface $request)
    
        return $this->withErrorHandling(function () use ($request) 
            return $this->convertResponse(
                $this->server->respondToAccessTokenRequest($request, new Psr7Response)
            );
        );
     

请帮帮我!!

【问题讨论】:

我假设您已经检查了数据库以确保用户被正确注册和存储? 是的,当然!我已经做了所有可能的事情,但仍然没有任何线索。 可以出示您的授权码吗? 为了授权,我正在使用基本上生成 api 的 laravel/passport oauth/token 路由。我没有为此写任何东西。我用它在 oauth/token 路由调用时执行的方法编辑了我的问题。你可以看看 【参考方案1】:

好的,我终于弄清楚了为什么会出现这个问题。我在 User.php 中有方法

public function setPasswordAttribute($password)
   
    $this->attributes['password'] = bcrypt($password);

默认情况下会加密我的密码字段。

但是我忘记了,在数据库上保存密码时又在做加密

$user->password = bcrypt($request['password']);

所以它加密了两次。因此我无法匹配凭据。完全是我的错。

【讨论】:

以上是关于不断收到 401 未经授权的“无效凭据”Laravel Passport的主要内容,如果未能解决你的问题,请参考以下文章

Web 服务 401:未经授权的错误

401(未经授权)ReactJS

代码=-1011 “请求失败:未经授权 (401)” AFNetoking

反应 axios 401 未经授权

Keycloak PUT 请求返回 401(未经授权)

使用 Axios 和 Firebase 时出现 401 未经授权的错误