编辑 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',填入下列内容:
return [
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => \App\User::class
]
]
];
打开 Lumen项目根目录 下的 'bootstrap/app.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':
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':
//...........................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 <<
生成 'Passport' 需要的加密 'keys' 以便生成访问令牌:
php artisan passport:keys
至此,Lumen5.4配置OAuth2.0 环境结束,使用方法与学院的Laravel文档中类似,这里只给出路由规则: