因为使用了 passport 包做登陆认证,但是passport又不支持多用户系统认证。所以那时候使用了一个中间表的方式去做认证,这种方式可以解决问题,但是太过复杂。

因为使用了 passport 包做登陆认证,但是passport又不支持多用户系统认证。所以那时候使用了一个中间表的方式去做认证,这种方式可以解决问题,但是太过复杂。

  1. 引入 smartins/passport-multiauth
composer require smartins/passport-multiauth
php artisan package:discover
  1. 迁移数据表 oauth_access_token_providers
php artisan migrate
  1. 运行 passport:install 命令来创建生成安全访问令牌时所需的加密密钥,同时,这条命令也会创建用于生成访问令牌的「个人访问」客户端和「密码授权」客户端:
php artisan passport:install
[linjinyu@localhost superdesk_boss]$ php artisan passport:install
Encryption keys already exist. Use the --force option to overwrite them.
Personal access client created successfully.
Client ID: 3
Client Secret: W4VUZlzlHtuDDUHhdOQYgbBHuqwc5VE4tCkTGTZv
Password grant client created successfully.
Client ID: 4
Client Secret: HpTBkfz4so2syACfleCttRlUAQdx7b1O52u0jfYg
  1. 运行 vendor:publish
php artisan vendor:publish --provider="SMartins\PassportMultiauth\Providers\MultiauthServiceProvider"
  1. 在使用 oauth/token 认证的时候要增加 provider 字段
POST /oauth/token HTTP/1.1
Host: localhost
Accept: application/json, text/plain, */*
Content-Type: application/json;charset=UTF-8
Cache-Control: no-cache

{
    "grant_type" : "refresh_token",
    "client_id": "client-id",
    "client_secret" : "client-secret",
    "refresh_token" : "refresh-token",
    "provider" : "admins"
}
{
    "error": "invalid_client",
    "message": "Client authentication failed"
}

请先后发表评论
  • 最新评论
  • 总共0条评论