【问题标题】:Consuming API with JavaScript - Valid token - Unauthenticated使用 JavaScript 使用 API - 有效令牌 - 未经身份验证
【发布时间】:2019-07-20 13:01:49
【问题描述】:

所以,我看到了大约 101% 的问题,并且确实尝试了每一个问题。我试图让它运行 3 天但没有成功。与我一起参与该项目的人正在做同样的事情,并且对他有用。

我已经设置了路线, 我的 middlewareGroups->web 中有\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,

我正在发送带有请求的标头, 我在EncryptCookies 中有protected static $serialize = true;

这是一个例子:

X-CSRF-TOKEN: 8Gr7XcRZDrfiFIwqaPyqVF1stXdIxv1tQ4Up6JUr X-Requested-With: XMLHttpRequest X-XSRF-TOKEN: eyJpdiI6ImU3RFRTRlNNd2hRc0J3bU9qb2l2UGc9PSIsInZhbHVlIjoiaWJnd1wvWTdteW1Cd2w5Zll2SmYwdkplQ094R05HUzZPckM0NUNrdFB5alNpTDduWHkxczZWcU5maW9WS1VnRk9RZGZqdGJQM1FXR29JMFhDS2RyMTVBPT0iLCJtYWMiOiI4YmRmMWI1OWI4OTg1NTM0NmU2Mjk4ZjM0YmU2NjJkOTAwM2JlZDYxZDBkNTEzZDc3ZTdmOTk0NGYwZDBjMWQzIn0= 

它总是说

{"message":"未验证。"}

我在 Windows 的 Homestead 上运行 Laravel 最新版本。 我真的很感激一点帮助,我已经尝试了一切,但似乎没有任何效果。

【问题讨论】:

    标签: javascript php laravel laravel-passport


    【解决方案1】:

    您要查找的身份验证令牌是 mentioned here 。它会将一个名为laravel_token 的cookie 附加到响应中,因此它应该可以使用axios 开箱即用。但同样,取决于您如何设置 axios,如果您不使用 axios,则需要在请求标头中手动设置 X-CSRF-TOKEN。看来您正在设置X-XSRF-TOKEN,这不是 Laravel 用来进行身份验证的。

    信用:Laravel 5.4 passport axios always returns Unauthenticated

    【讨论】:

    • 我确实有这个设置,我应该在我的问题中提到。 window.axios.defaults.headers.common = { 'X-CSRF-TOKEN': window.Laravel.csrfToken, 'X-Requested-With': 'XMLHttpRequest' };
    【解决方案2】:

    看起来中间件在验证访问令牌时返回 unauthenticated

    如果您使用中间件验证传入请求的访问令牌,例如:->middleware('auth:api');,那么在您的 javascript 上,您应该在请求的授权标头中将访问令牌指定为 bearer 令牌。

    访问令牌应如下所示:'Bearer '+access_token

    这里是完整的解释:Protecting Routes

    【讨论】:

    • 我在构造函数中使用了中间件,但由于我只是从网站前端发出请求,而不是第三方请求,我认为我不必使用不记名令牌。这就是为什么我要使用在使用 JavaScript 使用您自己的 API 部分中编写的内容。
    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2016-09-06
    • 2017-04-11
    • 2019-09-25
    • 2019-12-24
    • 2016-11-30
    • 2020-11-22
    • 2018-08-03
    相关资源
    最近更新 更多