[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。
调试接口:

验证接口:

使用 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 的误区讲解的更多相关文章
- Laravel Passport API 认证使用小结
Laravel Passport API 认证使用小结 八月 4, 2017 发布在 Laravel 看到Laravel-China 社区常有人问 Laravel Passport 用于密码验证方式来 ...
- laravel Passport - 创建 REST API 用户认证以及Dingo/Api v2.0+Passport实现api认证
第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...
- laravel passport加密jwt格式的access_token中的sub(user_id)字段
在很多需求我们不希望别人知道用户在我们表中的 user_id :但是又想用数据库的自增 id 功能:一般时候在取出用户后加密 user_id 加密即可:但是总有那么几个不经意间就可能把我们的 user ...
- iOS自定义转场动画实战讲解
iOS自定义转场动画实战讲解 转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerA ...
- Laravel Passport认证-多表、多字段解决方案
Laravel Passport认证-多表.多字段解决方案 2018年08月19日 09:31:01 醉卧码场君莫笑 阅读数:1632 1. 概述 API 通常使用令牌(token)进行认证并且在 ...
- laravel Passport - Dingo/Api v2.0+Passport 实现 api 认证
第一部分: 安装passport 使⽤ Composer 依赖包管理器安装 Passport : composer require laravel/passport 接下来,将 Passport 的服 ...
- laravel passport client_credentials
我是使用 Laravel 5.4 + Dingo Api + passport/jwt 两个验证方式 目前需要用到 passport 的 client_credentials 获取 token成功之后 ...
- 自定义 Laravel 5.7 - 6.X 中验证邮箱的标题文本
原理解析: 验证邮箱在Laravel默认实现中是一个Notification,不是Mailable,而为了自定义验证邮箱的默认配置,我们先来查看一下 /vendor/laravel/framework ...
- 关于connect by 误区讲解,纯属个人心得和经验,有图有文字
本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6927541.html 如果觉得对您有帮 ...
- Laravel Passport token过期后判断refresh_token是否过期
需求:前后端分离状态下,登录失效(token过期)后,前端需要知道下一步是跳转到登录页面还是使用refresh_token刷新token. 这就需要后端根据是否可以刷新token(refresh_to ...
随机推荐
- 3DCAT荣获2021金陀螺“年度XR行业技术创新奖”“年度优秀VR行业应用奖”两项大奖
作为年度行业影响力大奖,第六届金陀螺颁奖典礼与2021未来商业生态链接大会(简称"FBEC2021")同期举办.金陀螺奖金陀螺奖旨在对优质作品/项目及优秀企业做出嘉奖,鼓励创业者. ...
- 记录--vue3实现excel文件预览和打印
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印 ...
- Django实现发送邮件
1.获取QQ邮箱授权码 打开QQ邮箱 --> 设置 --> 账号 --> 下拉页面 --> 开启POP3/SMTP服务 --> 短信验证 --> 点击"我 ...
- https://codeforces.com/gym/496962
A略. B最大最小即为答案. C略. DE记录 t 的每个字母 在 s 中出现的最左和最右,特判端点. FG先贪心后反悔 or 背包. *H:不会.AC自动机.
- Java读取excel文件(.xlsx/.xls)和.csv文件存入MySQL数据库
1 package com.reliable.service; 2 3 import com.csvreader.CsvReader; 4 import com.reliable.bean.FileD ...
- Zookeeper解决了什么问题?
在公司中用到了zookeeper协调分布式系统,在这里记录下. (一). 首先是什么? 是一种适用于分布式应用程序的高性能协调服务.它在一个简单的界面中公开常见服务(如命名.配置管理.同步和组服务), ...
- #容斥#51nod 1407 与与与与
题目 给出 \(n\) 个数,问有多少个子集的按位与为0 分析 考虑容斥,设 \(f[i]\) 表示有多少个数按位与为 \(x\),满足 \(x\&i=i\) 那么答案就是 \(\sum_{i ...
- mybatis 查询一对多子表只能查出一条数据
mybatis 插叙一对多子表只能查出一条数据 环境 ssm 持久层 mybatis 关联查询一对多<collection> 原因 主表id 和子表id 一样 处理方式: select ...
- 模拟spring工作原理
1.配置文件 Service=service.Impl.ServiceImpl saveDao=dao.daoImpl.saveDaoImpl 2.模拟业务层 --接口 Service package ...
- 从 Oracle 到 MySQL 数据库的迁移之旅
目录 引言 一.前期准备工作 1.搭建新的MySQL数据库 2 .建立相应的数据表 2.1 数据库兼容性分析 2.1.1 字段类型兼容性分析 2.1.2 函数兼容性分析 2.1.3 是否使用存储过程? ...