Lumen5.4配置OAuth2.0【强迫症,就是要用最新版本的
2017-07-27 本文已影响1544人
我爱余倩
一、前言
- 与学院提及的自带 PassPort 有所不同,本文采用了 'Packagist' 上面的第三方基于 'PassPort' 的修改包——'dusterio/lumen-passport' 。
- 本文也将在原作者的基础上增加少许细节,仅供新手参考。
- 相关指导文献: 理解OAuth 2.0、RESTful API 设计指南 。
二、所需环境及软件
- Composer
- Lumen`s Project
- IDE(PHPStorm 或者 SublimeText)
- PostMan
三、开始
- 编辑 Lumen项目根目录 下的 'composer.json'(最好每一次修改文件都备份):
require:{ ......others....... 注意这一行末尾的逗号=> , "dusterio/lumen-passport": "^0.2.0" ......others....... }
- 部分旧教程是用了"dusterio/lumen-passport": "0.1.7|0.1.9",会出现错误,是因为自5.2版本以后,'bindshared() => singleton()'
- 打开管理员 'CMD' 工具,定位到 Lumen项目根目录:
composer update
- 更新完 Lumen项目根目录 的目录结构:
......others....... /vendor ~~~~~/dusterio <<<<<<新增 .................others............. ~~~~~/laravel ~~~~~~~~~~/lumen-framework ~~~~~~~~~~/passport <<<<<<新增 .................others............. ......others.......
- 在 Lumen项目根目录 新建 'config' 文件夹,在 'config' 中新建 'auth.php',填入下列内容:
<?php return [ 'defaults' => [ 'guard' => 'api', 'passwords' => 'users', ], 'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => \App\User::class ] ] ];
- 打开 Lumen项目根目录 下的 'bootstrap/app.php',填入下列语句:
<?php //...........................others............................... $app->withFacades(); //只是取消注释 $app->withEloquent(); //只是取消注释 //...........................others............................... $app->configure('auth'); //新增 $app->routeMiddleware([ 'auth' => App\Http\Middleware\Authenticate::class, ]); //只是取消注释 $app->register(Laravel\Passport\PassportServiceProvider::class); //新增 $app->register(Dusterio\LumenPassport\PassportServiceProvider::class); //新增 $app->alias('cache', 'Illuminate\Cache\CacheManager'); //新增,解决Lumen的Cache问题 //...........................others............................... $app->register(App\Providers\AuthServiceProvider::class); //只是取消注释 //...........................others............................... return $app;
- 修改 Lumen项目根目录 下的 'app/User.php':
<?php namespace App; use Illuminate\Auth\Authenticatable; use Laravel\Lumen\Auth\Authorizable; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Database\Eloquent\Model; use Laravel\Passport\HasApiTokens; //新增 class User extends Model implements AuthenticatableContract, AuthorizableContract { use Authenticatable, Authorizable; use HasApiTokens; //新增 //...........................others...............................
- 修改 Lumen项目根目录 下的 'app/Provider/AuthServiceProvider.php':
<?php //...........................others............................... use Dusterio\LumenPassport\LumenPassport; //新增 class AuthServiceProvider extends ServiceProvider { //...........................others............................... public function boot() { //...........................others............................... LumenPassport::routes($this->app); //新增 //...........................others...............................
- 在数据库中新增 'Passport' 的相关数据表
php artisan migrate php artisan passport:install <<<在oauth_clients表中填充了2个数据
- 生成 'Passport' 需要的加密 'keys' 以便生成访问令牌:
-
php artisan passport:keys
-
至此,Lumen5.4配置OAuth2.0 环境结束,使用方法与学院的Laravel文档中类似,这里只给出路由规则:
-

四、结语
- 本教程面向新手,更多教程会在日后给出。
- 随着系统升级,软件更新,以后的配置可能有所变化,在下会第一时间测试并且更新教程;
- 欢迎联系在下,讨论建议都可以,之后会发布其它的教程。