【问题标题】:Laravel Passport - How do you create a first-party client?Laravel Passport - 如何创建第一方客户端?
【发布时间】:2021-12-21 13:57:44
【问题描述】:

我目前正在阅读Laravel Passport 上关于跳过第一方客户端授权提示的文档。我已经根据典型用户将验证的客户端请求的范围保护了路由,但是,我使用 Laravel 护照作为我的第一方应用程序和第三方的单点登录服务器,因此想要跳过授权仅适用于第一方客户。

需要注意的是,无论是否有授权提示,范围都应该仍然适用。我的第一方客户端仍然会发送相对于用户的范围,我只想跳过授权提示并在登录后立即重定向。

我按照文档的建议创建了一个模型:

namespace App\Models;

use Laravel\Passport\Client as BaseClient;

class Passport extends BaseClient
{
    public function skipsAuthorization()
    {
        return $this->firstParty();
    }
}

但是,它没有提到如何生成第一方客户端,或者如何将当前客户端升级为第一方客户端。

在检查数据库表oauth_clients 时,没有任何相关列或外部表表明客户是第一方。

为此,我假设$this->firstParty() 需要在Passport 类中实现,并且应该创建迁移以添加is_first_party 列。

为此,文档进一步引用了Overriding default models,但是,文档显示Client 类是Passport::useClientModel 的默认值,但创建的模型建议扩展BaseClient

任何帮助表示赞赏。

【问题讨论】:

    标签: php laravel oauth-2.0 laravel-8 laravel-passport


    【解决方案1】:

    经过一些想法,我决定查看Client class within Github 以获得 Laravel 护照。

    /**
     * Determine if the client is a "first party" client.
     *
     * @return bool
     */
    public function firstParty()
    {
        return $this->personal_access_client || $this->password_client;
    }
    

    看来客户端必须是Personal Access 类型才能跳过授权。

    php artisan passport:client --personal
    

    扩展 Client 然后 Overriding the default model 工作正常。

    Passport::useClientModel(\App\Models\Passport::class);
    

    我的护照模型现在看起来像这样:

    namespace App\Models;
    
    use Laravel\Passport\Client;
    
    class Passport extends Client
    {
        public function skipsAuthorization()
        {
            return $this->firstParty();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2019-02-20
      • 2019-07-21
      • 1970-01-01
      • 2019-05-07
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      相关资源
      最近更新 更多