Laravel:Laravel + JWT API

By kcersing , 28 四月, 2020

//换源 阿里云 Composer 全量镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/


//安装

composer require tymon/jwt-auth


//在 config 下增加一个 jwt.php 的配置文件

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"


//在 .env 文件下生成一个加密密钥,如:JWT_SECRET=foobar

php artisan jwt:secret


更新User模型

<?phpnamespace App;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements JWTSubject    # 这里别忘了加
{
  use Notifiable;
  // Rest omitted for brevity
   /**
   * Get the identifier that will be stored in the subject claim of the JWT.
   *
   * @return mixed
   */
   public function getJWTIdentifier()
   {
       return $this->getKey();
   }
  /**
  * Return a key value array, containing any custom claims to be added to the JWT.
  *
  * @return array
  */
  public function getJWTCustomClaims()
  {
    return [];
  }
}

注册Facade

'aliases' => [
   ...
   // 添加以下两行
   'JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth',
   'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory',
 ],


修改 config/auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'jwt',      // 原来是 token 改成jwt
        'provider' => 'users',
    ],
 ],


跨域问题
安装 medz/cors

composer require medz/cors


发布配置文件

php artisan vendor:publish --provider="Medz\Cors\Laravel\Providers\LaravelServiceProvider" --force
修改配置文件
config/cors.php, 在 expose-headers 添加值 Authorizationreturn [    
    ......    
    'expose-headers'     => ['Authorization'],    
    ......
];


标签