PHPLaravel开发实践PHP经验分享

Lumen5.4配置OAuth2.0【强迫症,就是要用最新版本的

2017-07-27  本文已影响1544人  我爱余倩

一、前言

二、所需环境及软件

  1. Composer
  2. Lumen`s Project
  3. IDE(PHPStorm 或者 SublimeText)
  4. PostMan

三、开始

  1. 编辑 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()'
  2. 打开管理员 'CMD' 工具,定位到 Lumen项目根目录
    • composer update
  3. 更新完 Lumen项目根目录 的目录结构:
    ......others.......
    /vendor
    ~~~~~/dusterio                             <<<<<<新增
    .................others.............
    ~~~~~/laravel
    ~~~~~~~~~~/lumen-framework
    ~~~~~~~~~~/passport                        <<<<<<新增
    .................others.............
    ......others.......
    
  4. 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
          ]
      ]
    ];
    
  5. 打开 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;
    
  6. 修改 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...............................
    
  7. 修改 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...............................
    
  8. 在数据库中新增 'Passport' 的相关数据表
     php artisan migrate
     php artisan passport:install             <<<在oauth_clients表中填充了2个数据
    
  9. 生成 'Passport' 需要的加密 'keys' 以便生成访问令牌:
    • php artisan passport:keys

    • 至此,Lumen5.4配置OAuth2.0 环境结束,使用方法与学院的Laravel文档中类似,这里只给出路由规则:

Routes URL

四、结语

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

猜你喜欢

热点阅读