Laravel 和 Passport,随机 401 错误

Posted

技术标签:

【中文标题】Laravel 和 Passport,随机 401 错误【英文标题】:Laravel and Passport, random 401 errors 【发布时间】:2017-08-26 22:24:07 【问题描述】:

我正在编写一个单页 Web 应用程序。

我在前端使用 Vue.js,在后端使用 Laravel。

我包含了 Passport 令牌身份验证,并且我正在发送身份验证令牌

var login_data = 
    client_id : 2,
    client_secret : "SECRET_KEY",
    grant_type : "password",
    username : "mail",
    password : "pass"

到此 Passport 端点 http://IPADDRESS/oauth/token。然后我验证我的 AJAX 请求,包括这个头

 'Authorization': 'Bearer ' + ACC_TOKEN 

大多数时候一切正常,但有时我得到401 unauthorized。通常,如果我只是再做一次,请求就会通过。

我从 Kernel.php 中删除了 VerifyCsrfToken 中间件,并将 API 路由添加到异常,所以我认为这不是问题。

错误出现的频率似乎因网络而异,这意味着当连接到某些网络时,它几乎不会发生,而有时它是恒定的。

我真的不知道为什么会发生这种情况。

【问题讨论】:

【参考方案1】:

我的问题出在 PROJECTDIR/vendor/lcobucci/jwt/src/Signer/Rsa.php 中。

尽管证书有效,但这里的 openssl 函数 (openssl_get_publickey) 有时会返回错误信息。

我没有找到真正的解决方案。

我现在的技巧只是将代码更改为始终返回 1。

这不会改变令牌身份验证的工作方式,但会消除 Rsa 检查和此类故障导致的 401 错误。

【讨论】:

我编辑 Rsa.php 文件,如您所说,doVerify 函数返回始终为真,但错误仍然存​​在。你知道什么是真正的吗??? 这对你产生了一些日志吗?

以上是关于Laravel 和 Passport,随机 401 错误的主要内容,如果未能解决你的问题,请参考以下文章

401 未经授权使用带有 Laravel Passport 的不记名令牌

使用 Passport 进行 Laravel API 身份验证导致 401(未经授权)

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

总是为我的 Laravel Passport 生成的 OAuth 2 令牌响应 401(未授权)

Laravel Passport使用Axios 401未认证的API消耗自己的API.

在所有 Laravel api 请求中获取 401