安装

在开始之前,请通过 Composer 包管理器安装 Passport:

composer require laravel/passport
复制代码

Passport 服务提供器使用框架注册自己的数据库迁移目录,因此在注册提供器后,就应该运行 Passport 的迁移命令来自动创建存储客户端和令牌的数据表:

php artisan migrate
复制代码

接下来,运行 passport:install 命令来创建生成安全访问令牌时所需的加密密钥,同时,这条命令也会创建用于生成访问令牌的「个人访问」客户端和「密码授权」客户端:

php artisan passport:install
复制代码

配置

上面命令执行后,请将 Laravel\Passport\HasApiTokens Trait 添加到 User 模型中, 这个 Trait 会给你的模型提供一些辅助函数,用于检查已认证用户的令牌和使用范围:

Models/User.php

class User extends Authenticatable
{use HasApiTokens, Notifiable;
}
复制代码

在 AuthServiceProvider 的 boot 方法中调用 Passport::routes 函数。这个函数会注册发出访问令牌并撤销访问令牌、客户端和个人访问令牌所必需的路由:

Provinders/AuthServiceProvider.php

public function boot()
{$this->registerPolicies();Passport::routes();//设置token过期时间Passport::tokensExpireIn(now()->addDays(1)); //设置刷新token过期时间Passport::refreshTokensExpireIn(now()->addDays(30));
}
复制代码

将配置文件 config/auth.php 中授权看守器 guards 的 api 的 driver 选项改为 passport。此调整会让你的应用程序在在验证传入的 API 的请求时使用 Passport 的 TokenGuard 来处理:

config/auth.php

'guards' => ['web' => ['driver' => 'session','provider' => 'users',],'api' => ['driver' => 'passport','provider' => 'users','hash' => false,],],
复制代码

密码模式

在应用程序通过密码授权机制来发布令牌之前,在 passport:client 命令后加上 --password 参数来创建密码授权的客户端。如果你已经运行了 passport:install 命令,则不需要再运行此命令:

php artisan passport:client --password

请求令牌

创建密码授权的客户端后,就可以使用用户的电子邮件地址和密码向 /oauth/token 路由发出 POST 请求来获取访问令牌。而该路由已经由 Passport::routes 方法注册,因此不需要手动定义它。如果请求成功,会在服务端返回的 JSON 响应中收到一个 access_token 和 refresh_token:

请求参数:

'grant_type' => 'password',
'client_id' => 'client-id', //需要使用password_client=1
'client_secret' => 'client-secret',
'username' => 'taylor@laravel.com',
'password' => 'my-password',
'scope' => '',
复制代码

自定义用户名字段

当使用密码授权时,Passport 默认使用 email 作为「用户名」。但是,你可以通过在模型上定义一个 findForPassport 方法来自定义用户名字段:

Models/User.php

/*** 通过用户名找到对应的用户信息** @param  string  $username* @return \App\User*/
public function findForPassport($username)
{return $this->where('username', $username)->first();
}
复制代码

路由保护

通过中间件

Passport 包含一个 验证保护机制 可以验证请求中传入的访问令牌。配置 api 的看守器使用 passport 驱动程序后,只需要在需要有效访问令牌的任何路由上指定 auth:api 中间件:

Route::middleware('auth:api')->group(function () {});
复制代码

参考文档

Laravel5.8

转载于:https://juejin.im/post/5cb7d643518825186d654246

Laravel——Passport OAuth相关推荐

  1. php oauth2.0 实例,详解laravel passport OAuth2.0的4种模式

    参考: 1... 熟悉的场景 某个网站,某用户未注册,注册时提示可微信账号登录(github, google都有类似 某网站是第三方(客户端), 认证服务器和资源服务器都在微信,资源是指微信的用户名, ...

  2. Laravel Passport里的授权类型介绍

    本文来自pilishen.com----原文链接; 欢迎来和pilishen一起学习php&Laravel:学习群:109256050 OAuth2是一个安全框架,控制着程序受保护部分的准入, ...

  3. php artisan passport,API 认证解决方案:Laravel Passport

    API 认证解决方案:Laravel Passport 由 学院君 创建于2年前, 最后更新于 1年前 版本号 #1 27631 views 4 likes 0 collects 简介 Laravel ...

  4. php artisan passport,Laravel Passport

    安装并使用 Laravel Passport 来请求授权令牌(OAuth2.0认证方式) 一. 安装 Passport 使用 Composer 依赖包管理器安装 Passport composer r ...

  5. php passport security,php – Laravel – Passport / SPA 401未经授权

    我已经注册了 Laravel Passport文档中提到的Vue组件,它们也显示在我的应用程序中: 但是,它们没有显示任何令牌/客户端,而且我也无法创建任何令牌/客户端,因为我的应用程序说我" ...

  6. php composer 无法下载,php – composer无法安装laravel / passport

    我用它创建了一个新项目 laravel new blogposts 使用全局安装在我的ubuntu 18上的"Laravel Installer 2.0.1". 当我尝试使用安装护 ...

  7. Laravel的Class Laravel\Passport\Passport not found

    问题 ErrorClass 'Laravel\Passport\Passport' not foundhttp://ch.ch.ch/admin 方法 然后在运行 composer install

  8. Laravel+passport 实现API认证

    1.通过Composer安装Passport composer require laravel/passport 2.在配置文件app.php中的providers数组中注册Passport服务: L ...

  9. 使用 laravel Passport 做 API 认证

    安装larave laravel new passport_demo cd passport_demo && composer install 将 .env 中数据库配置修改为自己的数 ...

最新文章

  1. 今天分享个用Python爬虫爬取Bilibili弹幕的小例子解析
  2. 刚开始学centos和Oracle
  3. 数据结构与算法:二分法
  4. hdp amabri mysql_MySQL数据库之Ambari 安装配置 MySql
  5. HAproxy部署配置
  6. 搬家,又一次和过往告别
  7. linux命令中的cp,Linux高级技术:关于cp命令中拷贝所有的写法
  8. 使用idea 打jar包
  9. OPPO关联公司被授权“脑电波采集方法”相关专利
  10. linux定时任务总结。
  11. 15个实用的管理mysql的MySQLadmin命令
  12. zk可实现分布式锁,Redis也可实现,之间有什么区别?
  13. NYOJ 部分和问题
  14. mysql跨库查询数据
  15. Android设备远程控制工具AVDTools使用
  16. 【多校联赛】The Crime-solving Plan of Groundhog
  17. re匹配截至到第一个中文_Python中的正则表达式(re模块)!非常重要!
  18. 【思维导图】Excel转成思维导图
  19. 开关电源MOS管选型500V、600V、650V参数
  20. CRF++安装教程(含Windows和Linux两个版本)

热门文章

  1. python怎么按键开始与停止_使用Python启动和停止子流程
  2. java栈代码执行_这段实现栈的java代码执行错误..
  3. 迁移学习与微调的区别
  4. hosts文件_电脑修改hosts文件屏蔽网站方法
  5. 租借云服务器 工业信号数据采集,一种工业用物联网云服务平台智能采集方法...
  6. 如何实现运行时刻的多态?(c++)
  7. 《系统集成项目管理工程师》必背100个知识点-89行政收尾和合同收尾的区别
  8. 《系统集成项目管理工程师》必背100个知识点-19项目管理计划的内容
  9. JavaScript 开发10个实用技巧
  10. Delphi中多线程用Synchronize实现VCL数据同步显示