多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
github地址 ``` https://github.com/tymondesigns/jwt-auth ``` 安装教程 ``` https://jwt-auth.readthedocs.io/en/develop/laravel-installation/ ``` 首先安装扩展 ``` composer require tymon/jwt-auth ``` 如果是laravel 5.4及其以下的需要如下设置 反之忽略 ``` 将服务提供者添加到 config/app.php 配置文件中的 providers 数组中,如下所示 'providers' => [ ... Tymon\\JWTAuth\\Providers\\LaravelServiceProvider::class ] ``` 加下来添加配置文件了 ``` php artisan vendor:publish --provider="Tymon\\JWTAuth\\Providers\\LaravelServiceProvider" ``` 如下所示 ![](https://img.kancloud.cn/bf/d3/bfd3a822ac8797ed83251570a638d83e_958x86.png) 发布自动秘钥(会在.env下面生成 JWT_SECRET 这个键) ``` php artisan jwt:secret ``` 如下所示 ![](https://img.kancloud.cn/e5/98/e59891392683a03447ce011fb880aa80_817x49.png) 这样安装工作就完毕了 开始使用的设置 需要设置一下models中的User模型 *首先,您需要在您的用户模型上实现 Tymon\\JWTAuth\\Contracts\\JWTSubject 合约,这需要您实现两个方法 getJWTIdentifier() 和 getJWTCustomClaims()。* ___ ``` <?php namespace App\Models; use Tymon\JWTAuth\Contracts\JWTSubject; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable implements JWTSubject { use Notifiable; /** * 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 []; } } ``` ___ 其中 `public function getJWTCustomClaims()`方法是为了扩展 `payload`中的值 如果返回空数组那么就是显示在`config/jwt.php`中配置的默认值 ~~~ 'required_claims' => [ 'iss', 'iat', 'exp', 'nbf', 'sub', // 用户的id 'jti', ], ~~~ 如果需要加上用户的ip 那么可以这样 ~~~ public function getJWTCustomClaims() { return [ 'ip' => $this->ip // 用户模型中的字段 ]; } ~~~ 加上后返回ip在其中 ___ 然后需要配置config/auth.php的目录 ``` 原来的样子 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], ], 补充一下 如下所示 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'jwt', 'provider' => 'users', ], ], ```