【问题标题】:Laravel Passport not authenticating with JWT cookie (self consuming API)Laravel Passport 未使用 JWT cookie 进行身份验证(自用 API)
【发布时间】:2019-01-03 05:31:06
【问题描述】:

我已经浏览了整个文档页面,据我所知,我已经按照文档中的说明进行了所有设置。但是,当我尝试向 /api/users 发出 GET 请求时,它总是返回一个 401 Unauthorized

如果我检查请求,我发现 laravel_token 确实与请求以及 CSRF 一起传递。

在这一点上,我不确定为什么它总是无法通过身份验证,但这非常令人沮丧,而且我确信这是我忽略的一些小问题。

我正在使用 Laravel 5.7.5。

配置步骤完成:

  • php artisan passport:install
  • 为用户模型添加了特征
  • Passport::routes() 添加到AuthServiceProvider::boot()
  • config/auth.php 中将 API 驱动程序更改为护照
  • CreateFreshApiToken::class 添加到 Web 中间件

【问题讨论】:

  • 如何检查请求?你用浏览器试过吗?如果是这样,你做错了。您应该使用一些应用程序对您的端点进行 json 调用。像邮递员的东西。能够在标题中设置应用程序/类型的东西。如果您通过正确的标头调用端点,请检查您的文件密钥文件权限。
  • @train_fox 我正在检查使用 Axios 发出的请求,这就是 Passport 文档的处理方式。这绝对不是错误的做法。我不确定files key files permissions 是什么意思。
  • 当你运行php artisan passport install时,laravel 会生成 2 个文件,私钥和公钥。检查存储目录找到它们并检查它们的权限,需要的权限是644。
  • @train_fox 啊,是的,那些文件有正确的权限。
  • 您是否尝试访问 api.php 路由文件中定义的默认路由?

标签: laravel laravel-5 laravel-passport laravel-5.7


【解决方案1】:

经过大量挖掘,我终于弄清楚了我的问题所在。

在 Laravel 5.6 及更高版本中,cookie 不再被序列化/反序列化。但是,Passport 仍然希望 cookie 被序列化。 Laravel 或 Passport 的文档都没有指出这一点,希望它们能更加同步,所以这不是问题。

要解决此问题,您只需将Passport::withoutCookieSerialization(); 添加到app\Providers\AuthServiceProvider::boot()

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 2016-05-18
    • 2016-03-21
    • 2017-05-13
    • 2019-01-31
    • 1970-01-01
    • 2020-08-17
    • 2019-12-20
    • 2019-06-29
    相关资源
    最近更新 更多