laravel 5.5 api接口开发:JWT安装+实现API token 认证

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' => Dingo\Api\Auth\Provider\JWT::class
]

第三步:测试

user模型需要继承 Tymon\JWTAuth\Contracts\JWTSubject 接口,并实现接口的两个方法 getJWTIdentifier () 和 getJWTCustomClaims ()。

<?php

namespace App\Models;

use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Auth;
use Spatie\Permission\Traits\HasRoles;

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=\App\User::first()


2、\Auth::guard('api')->fromUser($user)->setTTL(60*24*365) 

可以通过 setTTL(60*24*365) 设置为有效期一年,单位为一分钟,默认有效期为60分钟。

  

  

 postman测试:

 编辑:routes/api.php (需要先安装dingo\api,见上篇)

$api = app('Dingo\Api\Routing\Router');
$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api'
], function($api) {
  
    $api->group(['middleware'=>'api.auth'],function ($api)
    {
        $api->get('user',function()
        {
          /*验证token成功获取用户信息*/
           echo Auth::guard('api')->user();
        });
    });
});

  

猜你喜欢

转载自www.cnblogs.com/fogwang/p/12001893.html