安装并使用 Laravel Passport 来请求授权令牌(OAuth2.0认证方式)

一、 安装 Passport

使用 Composer 依赖包管理器安装 Passport

composer require laravel/passport

这句代码添加到 config/app.php 的 providers 数组

Laravel\Passport\PassportServiceProvider::class,

项目目录根目录执行下面命令,来运行 Passport 自带的数据库迁移文件(用于自动创建 Passport 必需的客户端数据表和令牌数据表)

php artisan migrate

返回的结果:

Migration table created successfully.

Migrating: 2014_10_12_000000_create_users_table

Migrated: 2014_10_12_000000_create_users_table

Migrating: 2014_10_12_100000_create_password_resets_table

Migrated: 2014_10_12_100000_create_password_resets_table

Migrating: 2016_06_01_000001_create_oauth_auth_codes_table

Migrated: 2016_06_01_000001_create_oauth_auth_codes_table

Migrating: 2016_06_01_000002_create_oauth_access_tokens_table

Migrated: 2016_06_01_000002_create_oauth_access_tokens_table

Migrating: 2016_06_01_000003_create_oauth_refresh_tokens_table

Migrated: 2016_06_01_000003_create_oauth_refresh_tokens_table

Migrating: 2016_06_01_000004_create_oauth_clients_table

Migrated: 2016_06_01_000004_create_oauth_clients_table

Migrating: 2016_06_01_000005_create_oauth_personal_access_clients_table

Migrated: 2016_06_01_000005_create_oauth_personal_access_clients_table

来创建生成安全访问令牌时用到的加密密钥及私人访问和密码访问客户端。

php artisan passport:install

返回的结果:

Encryption keys generated successfully.

Personal access client created successfully.

Client ID: 1

Client Secret: iG3Q9Dgv4CmUw3bMVFJIxru5nOPOaMMOqkB4Hu5Y

Password grant client created successfully.

Client ID: 2

Client Secret: zaTJ4tfT6lPN1j9yLLwtluKJ18gaW7PHzNy4NKAt

将下面代码 Trait 添加到 App\User 模型中,这个 Trait 会给这个模型提供一些辅助函数,用于检查已认证用户的令牌和使用作用于。

//JonyGuan:: 加在 namespace App; 下面

use Laravel\Passport\HasApiTokens;

找到use Notifiable;在其后面添加 HasApiTokens

//use Notifiable; // -> 这个是原来的,下面的是新调整后的

use Notifiable,HasApiTokens;

打开\app\Providers\AuthServiceProvider.php 先在头部添加上

use Laravel\Passport\Passport;

再找到boot()在其下增加一行 ,来注册 Passport 在访问令牌、客户端、私人访问令牌的发放和吊销过程中一些必要路由。

Passport::routes();

最后修改下配置文件 config/auth.php 中的 api driver 改为 passport,此项操作会将 API 请求时使用 Passport 的 TokenGuard 来处理授权保护。打开\app\config\auth.php 找到 'guards'数组 修改如下:

###原来的:

'guards' => [

'web' => [

'driver' => 'session',

'provider' => 'users',

],

'api' => [

'driver' => 'token',

'provider' => 'users',

],

],

修改后的:

'guards' => [

'web' => [

'driver' => 'session',

'provider' => 'users',

],

'api' => [

'driver' => 'passport',

'provider' => 'users',

],

],

全部配置好后,我们来请求令牌,但是发现我们并没有创建任何用户,于是我们需要用到seed来预设填充数据。

php artisan make:seeder UsersTableSeeder

创建一个 Seeder

然后打开 database\seeds 文件夹里已经新建了一个叫 UserTableSeeder.php 的文件,打开它然后在 run 方法内输入以下代码:

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder

{

/**

* Run the database seeds.

*

* @return void

*/

public function run()

{

DB::table('users')->insert([

'name'=>'admin',

'email'=>'admin@xiaoguan.com',

'password'=>bcrypt('admin')

]);

}

}

执行下面命令,来往 user 表中填充刚刚添加好的 seed 数据。

php artisan db:seed --class=UsersTableSeeder

二、JavaScript 请求授权令牌

修改默认首页模板 \resources\views\welcome.blade.php

Laravel Passport 实战

.m-t-md{

margin-top: 30px;

}

Laravel Passport 实战

用户名

密码

登录

$('#loginButton').click(function(event){

event.preventDefault();

$.ajax({

type:'post',

url:'/oauth/token',

dataType:'json',

data:{

'grant_type':'password',

'client_id':'2',

//JonyGuan:: 注意这个里填写的client_secret是你php artisan passport:install生成的,注意匹配

'client_secret':'zaTJ4tfT6lPN1j9yLLwtluKJ18gaW7PHzNy4NKAt',

'username':$('#username').val(),

'password':$('#password').val(),

'scope':''

},

success:function(data){

console.log(data);

alert(JSON.stringify(data));

},

error:function(err){

console.log(err);

alert('statusCode:'+err.status+'\n'+'statusText:'+err.statusText+'\n'+'description:\n'+JSON.stringify(err.responseJSON));

}

});

});

注意 JS 部分JonyGuan::提示client_secret要修改成自己生成的

再将以下代码写入 User 模型 \app\User.php 找到 protected $hidden 数组 ,放其下面即可

/**

* 自定义用Passport授权登录:用户名+密码

* @param $username

* @return mixed

*/

public function findForPassport($username)

{

return self::where('name', $username)->first();

}

大功告成 访问首页 输入用户名 admin 和密码 admin ,点击登录按钮尝试登录:

{

"token_type": "Bearer",

"expires_in": 31536000,

"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjUzNjg4Y2RiOWQ5ZGQ4ZDA1MGYxNWI2ODY5Y2E3MTUyNTFhMzQ4YmMzMDM3NmNhYThiYzRjNzEyZGFiNzhmMWMwNjc4YTdmNzViZThmMWY4In0.eyJhdWQiOiIyIiwianRpIjoiNTM2ODhjZGI5ZDlkZDhkMDUwZjE1YjY4NjljYTcxNTI1MWEzNDhiYzMwMzc2Y2FhOGJjNGM3MTJkYWI3OGYxYzA2NzhhN2Y3NWJlOGYxZjgiLCJpYXQiOjE1MTYzNDQwMzksIm5iZiI6MTUxNjM0NDAzOSwiZXhwIjoxNTQ3ODgwMDM5LCJzdWIiOiIzIiwic2NvcGVzIjpbXX0.LTt8nUqw15bMaKPVTBQrzUt5H-Bjey_SlfXZqfBdbiWUMzT-LcXlbx9Akkqa9i-W117JO4Gz4SGAk6dDyeFnxivXzHWwNiRs7pAkkG4HVC64IZG3TyJflNN1HHWtRJzv0hhqG7rfZJnU6H226p5mws8pwr-MxC9O12y-XZiI6ibjGc_jV3REbTjHNt8c-48GjjWkzgnafYHAfFo0n0xpv3uuX-skWns7RL4ge7Id6F6s-hg_XUkHu8ClR8ektP0CiCnzZ7FhSgbV7HOPcA5RhSt9j50H3Ud-h9hhz61F0xmIEQFLG9fz7x_dToDmV19qvoJ3cP_5dM4uwaWTsjve_igTEje8ECrKyRQKs733J3111HYgjX_F54sVcRU7gmOv3gJK55VEff1ZP25HDEa7PDL2cK8d5MAnIqXp0d7Qa1CAxz5VYlIlpek4VfSAAr72J65mtm7jYUvqtD52i7sa4iHtq8Gq5jJB8-eosPhS5TKkJId23lFMoWz5ab8GhVVbLwo1MRJPRXS1mdXpr3XJ29cH8MOa6SspcCgcTSShZRgk9PHV8Oqzd9i2J-XcmUV1LfNuoghDmVahb9PN6-sSZBw17zi8kLpWq08srw_0MjU6GlbNJS8jfd9fx-2bAArn2Nex27yrvMuBUC_ZQntKT_ZH1aal5qrLjfy9DOxYNZI",

"refresh_token": "def50200244da9705e8faf081915fa5a2a4542318fb2ff0649330d89c8340cdf20e3cec0ab09f4d2f6c1803eecf6d17a2c11b6c1796c1d4d5e2ef354bb986b21e4ae6ea17d4f412b6e75738ea3ae8e7ddf0eba2b2c0517d7aa7d0ad01eb39444bf971a76ade45e92fa290e368c00d2f0998feeff923e26b4006a21750a6226ac696909f245d868972ba176a9d6feebc768309f02ea035fb3f4b9ab098824ab0e63b751a4d528f01853a36a3d372ca03794077f2bd6a10af0dd0c6a286bdfd52d579fb87c990afd9e64e8ec01c40b2aa8e9af996f0eb034e7ea3bc9c64cdd35bbf6b6588826e75e41d9488a829602e40197d595cd09bbd89be862a33e6e1ea57a2b21b99c76ed9379e26209bc2b18e2bc99a77559a4232ecc987cccabac670d763a766ab1d397768e11c2a91fa821466ac97942792af6fcbb3a6fa71d0c7b2a82d46660e48a33b515ccbeafabdd5c02d9fbadc20c58c6b99f14b6276321522557ba"

}

官方文档:

https://laravel.com/docs/5.4/passport

如遇到问题可留言 QQ:309678100 大力水手

php artisan passport,Laravel Passport相关推荐

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

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

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

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

  3. Laravel——Passport OAuth

    安装 在开始之前,请通过 Composer 包管理器安装 Passport: composer require laravel/passport 复制代码 Passport 服务提供器使用框架注册自己 ...

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

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

  5. Laravel+passport 实现API认证

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

  6. 使用 laravel Passport 做 API 认证

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

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

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

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

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

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

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

最新文章

  1. java person抽象类_java 抽象类
  2. 宏平均macro average
  3. Oracle 11g r2 安装
  4. SQL性能--left join和inner join的运行速度与效率
  5. .NET简谈组件程序设计之(手动同步)
  6. git 一口气带你走完git之旅
  7. CRMM_PR_MAST cannot activate
  8. 2k 幻14_幻14、2020雷蛇潜行版、mbp、gs66等笔记本之间的选择??
  9. P5170 【模板】类欧几里得算法(类欧)
  10. POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)
  11. 简单易懂设计模式——简单工厂模式
  12. 一分钟了解阿里云产品:网络安全专家服务
  13. mysql 随机记录 newid()_sql随机查询数据语句(NewID(),Rnd,Rand(),random())
  14. Google Guava之--cache
  15. VS(Microsoft Visual Studio)C语言一个解决方案内部创建多个项目
  16. Android studio导入工程很卡及下载网络jar很慢问题总结
  17. 转:基于Jmeter的MQTT测试插件
  18. SpringCloud学习(五)路由网关(zuul)(Finchley版本)
  19. Pytorch之pack_padded_sequence与pad_packed_sequence函数
  20. 最好用的jpg转pdf软件

热门文章

  1. 画仓鼠大赛 结果公布
  2. 迅龙中文搜索 0.7 nSearch版 C# 源代码下载
  3. Recsys 2018长篇论文总结
  4. CEP的一个简单理解
  5. 【luogu P5055】【模板】可持久化文艺平衡树
  6. 请简要说明西门子PLC1500的主要功能
  7. 【接口调用】EasyCVR获取直播流接口调用过程
  8. Java设计一个类代表二维空间的一个点,设计一个类代表二维空间的一个圆,计算面积,,并写程序验证计算一个点(Point对象)是否在圆(Cricle对象)内
  9. 《论文阅读》Multi-Task Learning of Generation and Classification for Emotion-Aware Dialogue Response Gener
  10. 在windows中要使用计算机进行高级,2017年电大计算机上机操作题(带答案)