JWT全称是 JSON Web Token 的缩写,是一个非常轻巧的规范,这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息。
第一步安装:
/* jwt-auth 是 Laravel 和 lumen 的 JWT 组件,首先来安装一下,Laravel 5.5 的适配版本为 1.0.0-rc.2 */ composer require tymon/jwt-auth:1.0.0-rc.2
第二步配置:
1、安装完成后,我们需要设置一下 JWT 的 secret,这个 secret 很重要,用于最后的签名,更换这个 secret 会导致之前生成的所有 token 无效。
php artisan jwt:secret
2、修改 config/auth.php,将 api guard 的 driver 改为 jwt

4、在config/api.php添加内容
'auth' => [
'jwt' => DingoApiAuthProviderJWT::class
]
第三步:测试
user模型需要继承 TymonJWTAuthContractsJWTSubject 接口,并实现接口的两个方法 getJWTIdentifier () 和 getJWTCustomClaims ()。
<?php
namespace AppModels;
use TymonJWTAuthContractsJWTSubject;
use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;
use Auth;
use SpatiePermissionTraitsHasRoles;
class User extends Authenticatable implements JWTSubject
.
.
.
// Rest omitted for brevity
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
}
使用 php artisan tinker 测试生成token:
1、$user=AppUser::first()
2、Auth::guard('api')->fromUser($user)->setTTL(60*24*365)
可以通过 setTTL(60*24*365) 设置为有效期一年,单位为一分钟,默认有效期为60分钟。

postman测试:
编辑:routes/api.php (需要先安装dingoapi,见上篇)
$api = app('DingoApiRoutingRouter');
$api->version('v1', [
'namespace' => 'AppHttpControllersApi'
], function($api) {
$api->group(['middleware'=>'api.auth'],function ($api)
{
$api->get('user',function()
{
/*验证token成功获取用户信息*/
echo Auth::guard('api')->user();
});
});
});
