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(未授权)