【问题标题】:Laravel/Passport - After remigration keys are not usableLaravel/Passport - 重新迁移后密钥不可用
【发布时间】:2020-11-05 19:06:10
【问题描述】:

设置

  • 护照版本:“laravel/passport”:“^9.3”,
  • Laravel 版本:“laravel/framework”:“^7.0”,
  • PHP 版本:“php”:“^7.2.5”,
  • 数据库驱动和版本:MYSQL 8.0.15

说明:

我使用 this article 用 laravel-passport 创建了新的 API。安装后我已经成功注册了一些用户。然后经过一些编码后,我需要向现有表中添加一些列。因此,在添加这些列之后,我使用了新命令来重新迁移所有数据库。

php artisan migrate:fresh --seed

操作成功,所有表(oauth 表)都已创建。 但在此迁移过程之后,现有的护照授予令牌不可用。当我通过从 Web 应用程序界面发送正常 AJAX 请求注册新用户时,我收到此错误。

Undefined property: stdClass::$refresh_token

我已经尝试了很多方法并研究了这个问题,但只有在更新旧客户端和密码密钥过程有效之后。

php artisan passport:install --force

复制步骤:

安装护照后,只需安装和创建密钥并迁移数据库。所以一切都会奏效。然后在使用命令 php artisan migrate:fresh 重新迁移数据库之后。那么旧密钥将无法使用。

【问题讨论】:

  • 你做了php artisan passport:keys 吗?
  • @Skyro682 是的。显示此警告 - 加密密钥已存在。使用 --force 选项覆盖它们。

标签: php laravel laravel-passport laravel-7


【解决方案1】:

这样做会覆盖现有的密钥,它会起作用

php artisan passport:install --force

或者您可以使用发布 Passport 的配置文件

php artisan vendor:publish --tag=passport-config

这将提供从您的环境变量加载加密密钥的选项:

详细说明请参考https://laravel.com/docs/7.x/passport

【讨论】:

  • 我已经提到这个修复了。但我不想在新迁移后每次都编辑 .env 。这不是解决方案。
  • @WebMan 好的,然后从环境中加载您的密钥以避免这种情况。我已经更新了我的答案检查一次
  • 我已经在 .env PERSONAL_CLIENT_ID=1 PERSONAL_CLIENT_SECRET= PASSWORD_CLIENT_ID=2 PASSWORD_CLIENT_SECRET= 我在这里删除了我的密钥。你试过我说的过程吗?我猜你的也行不通:)
  • 我不认为您可以按照上面的建议从 .env 加载您的密钥 - 它们超过了 4K 字符限制
猜你喜欢
  • 2019-05-17
  • 2019-03-20
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多