[PHP] 自定义 laravel/passport 的误区讲解

Posted Ethan Plan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PHP] 自定义 laravel/passport 的误区讲解相关的知识,希望对你有一定的参考价值。

 

Passport 的 Client 模型对应用户是默认的 User 模型、使用的 guards 是 api。

如果你发现自定义 passport 时总是调试不成功,那么很有可能是以下原因。

 

    /**
     * Get the user that the client belongs to.
     *
     * @return \\Illuminate\\Database\\Eloquent\\Relations\\BelongsTo
     */
    public function user()
    {
        return $this->belongsTo(
            config(\'auth.providers.\'.config(\'auth.guards.api.provider\').\'.model\')
        );
    }

 

Passport 如果要替换 Users,需要修改 config/auth.php 中 guards.api.provider 的值,并且增加新的 auth.providers。

 

Passport 如果打算新增 guards 来替换默认使用的 api,需要覆写 Client 模型的上面代码部分、并在 AuthServiceProvider 中启用新模型。 

https://laravel.com/docs/6.x/passport#overriding-default-models

 

config/auth.php example:

// Used by laravel/passport Client, see app/Client.php
\'oauth\' => [
    \'driver\' => \'passport\',
    \'provider\' => \'members\',
    \'hash\' => false,
],

 

 app/Providers/AuthServiceProvider.php example:

public function boot()
{
    $this->registerPolicies();

    Passport::routes();

    Passport::useTokenModel(Token::class);
    Passport::useClientModel(Client::class);
    Passport::useAuthCodeModel(AuthCode::class);
    Passport::usePersonalAccessClientModel(PersonalAccessClient::class);
}

 

注意,自定义的用户表 model 依旧需要继承自 \\Illuminate\\Foundation\\Auth\\User,而不是默认的 Illuminate\\Database\\Eloquent\\Model。

 

调试接口:

 [PHP] 自定义 laravel/passport 的误区讲解

 

验证接口:

 [PHP] 自定义 laravel/passport 的误区讲解

使用 auth:api 作为 middleware,根据配置的 passport 驱动,内部 guard 根据 token 传递方式进行 BearerToken(JWT) 或者 Cookie 验证,验证通过后会在 $request 附上相关用户信息 oauth_access_token_id、oauth_client_id、oauth_user_id、oauth_scopes。

 

[PHP] 浅谈 Laravel Authentication 的 auth:api

[PHP] 浅谈 Laravel Authentication 的 guards 与 providers

[PHP] 浅谈 Laravel 三大验证方式的区别, auth:api, passport, auth:airlock

Link:https://www.cnblogs.com/farwish/p/12222377.html

以上是关于[PHP] 自定义 laravel/passport 的误区讲解的主要内容,如果未能解决你的问题,请参考以下文章

php生成随机密码(php自定义函数)转自先锋教程网

php Wordpress自定义自定义菜单类

php [自定义图像尺寸]添加自定义尺寸图像(上传媒体时的新尺寸)#wordpress #php

php 自定义元字段的自定义帖子类型

php 具有自定义分类类别的自定义帖子类型

php 创建具有自定义分类的自定义帖子类型