分享Laravel Passport 踩坑日记
发布时间 - 2020-09-07 00:00:00 点击率:次下面由Laravel教程栏目给大家分享Laravel Passport 踩坑日记,希望对需要的朋友有所帮助!
以前的项目大多使用 dingoapi + jwt-auth 实现的 api 认证,laravel 虽然在很早就出了 passport ,但一直没有怎么关注。
今天撸了一把 passport ,虽然遇到不少坑,但是赶脚这个东西还是蛮好用的~
坑1:我暂时只想通过账号密码获取 token
Passport 一出生就自带了很多的路由。。 but,这些东东大部分对我是真的没用啊
解决方案:
在你的 AuthServiceProvider 里重新定义:
Passport::routes(function (RouteRegistrar $router) {
$router->forAccessTokens();
}, ['prefix' => 'api']);坑2: 注册账号时,如何手动生成 Token ?
jwt-auth 的 JWTAuth::fromUser($user); 可以很简单的生成token,但是在 Passport 里似乎没有现成的方法。
解决方案:
注册完账号后,再一次主动请求 oauth/token
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()){
return response()->json($validator->errors());
}
event(new Registered($user = $this->create($request->all())));
$client = \DB::table('oauth_clients')->where('password_client', 1)->first();
$request->request->add([
'username' => $user->email,
'password' => $request->password,
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'scope' => '*'
]);
$proxy = Request::create(
'oauth/token',
'POST'
);
return Route::dispatch($proxy);
}执行,获得返回
{
"token_type": "Bearer",
"expires_in": 1296000,
"access_token": "xxx",
"refresh_token": "xxx"
}完美解决。
坑3:我想要使用手机号登录
Passport 其实已经提供了动态修改用户登录的接口,只不过没有在文档里写出来
解决方案:
在你的 User Model 里增加如下方法
public function findForPassport($login) {
return User::orWhere('email', $login)->orWhere('mobile', $login)->first();
}坑4: 当使用错误的 token 时, passport 总会跳转到 login 方法
查看源码发现 passport 用的是 web auth 中间件,难怪如此
在你的请求头里增加 Accept:application/json ,问题解决
例如:
# laravel
# 的是
# 我是
# 出了
# 给大家
# 很简单
# 只想
# 总会
# 一出
# 带了
# 一直没有
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
如何用腾讯建站主机快速创建免费网站?
如何在腾讯云免费申请建站?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在IIS服务器上快速部署高效网站?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel如何实现本地化和多语言支持?(i18n教程)
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
Laravel模型事件有哪些_Laravel Model Event生命周期详解
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在Windows服务器上快速搭建网站?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Python并发异常传播_错误处理解析【教程】
如何在建站之星网店版论坛获取技术支持?
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
油猴 教程,油猴搜脚本为什么会网页无法显示?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何基于云服务器快速搭建网站及云盘系统?
如何正确选择百度移动适配建站域名?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
如何用已有域名快速搭建网站?
java中使用zxing批量生成二维码立牌
IOS倒计时设置UIButton标题title的抖动问题
js代码实现下拉菜单【推荐】
如何快速生成专业多端适配建站电话?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何登录建站主机?访问步骤全解析
利用vue写todolist单页应用
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何在局域网内绑定自建网站域名?
b2c电商网站制作流程,b2c水平综合的电商平台?
Laravel如何使用Service Container和依赖注入?(代码示例)
Python数据仓库与ETL构建实战_Airflow调度流程详解
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Laravel怎么在Blade中安全地输出原始HTML内容
如何快速生成橙子建站落地页链接?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何快速搭建安全的FTP站点?
浅析上传头像示例及其注意事项
node.js报错:Cannot find module 'ejs'的解决办法
Swift中swift中的switch 语句
如何制作一个表白网站视频,关于勇敢表白的小标题?
Android中AutoCompleteTextView自动提示


'scope' => '*'
]);
$proxy = Request::create(
'oauth/token',
'POST'
);
return Route::dispatch($proxy);
}