美文网首页
Lumen5.4 中使用jwt-auth生成token后验证

Lumen5.4 中使用jwt-auth生成token后验证

作者: 骑代码奔小康 | 来源:发表于2019-10-28 11:51 被阅读0次

生成token的方法 参考我上一篇文章,这篇是在token生成后,对token进行验证

一、app\Providers\AuthServiceProvider.php

文件中有个方法boot,在上一篇中已经创建好了

    /**
     * Boot the authentication services for the application.
     *
     * @return void
     */
    public function boot()
    {
        // Here you may define how you wish users to be authenticated for your Lumen
        // application. The callback which receives the incoming request instance
        // should return either a User instance or null. You're free to obtain
        // the User instance via an API token or any other method necessary.
        
        $this->app['auth']->viaRequest('api', function ($request) {
            return \App\User::where('email', $request->input('email'))->first();
        });

    }

二、在控制器中新建方法

/**
* 验证token的方法
*/
public function  test(Request $request){

    // 获取到客户端header中传过来的  authorization
    // $token = $this->jwt->setRequest($request)->getToken();

    // 验证token是否可以使用
    // $user = $this->jwt->authenticate($token)->toArray();

    // 刷新token
    // $newToken = $this->jwt->refresh($token);

    // 获取token的过期时间
    $newToken = $this->jwt->factory()->getTTL() * 60;
    dd( $newToken );
    exit;
    // DB::connection()->enableQueryLog();
    $info =   app('auth')->user()->toArray();
    // $sql = DB::getQueryLog();
    echo date('Y-m-d H:i:s',time());
    dd( $info );
}

三、创建路由并引入中间件

$api->version( ['v1', 'v2'],   ['namespace' => 'App\Http\Controllers\Auth', 'middleware' => 'auth:api'], function($api){
    //获取token
    $api->post('auth/test', 'AuthenticateController@test');
});

四、在postman上面请求接口

token验证不同过的时候会返回Unauthorized.
这个返回值可以修改中间件中的方法(handle)自定义 路径 App\Http\Middleware\Authenticate.php :

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Auth\Factory as Auth;

class Authenticate
{
    /**
     * The authentication guard factory instance.
     *
     * @var \Illuminate\Contracts\Auth\Factory
     */
    protected $auth;

    /**
     * Create a new middleware instance.
     *
     * @param  \Illuminate\Contracts\Auth\Factory  $auth
     * @return void
     */
    public function __construct(Auth $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if ($this->auth->guard($guard)->guest()) {
            // return response('Unauthorized.', 401);
            return response('token验证失败.请重新登录', 401);
        }

        return $next($request);
    }
}
image.png

验证通过的时候请求正常


image.png

有点乱,后面再整理........................

相关文章

网友评论

      本文标题:Lumen5.4 中使用jwt-auth生成token后验证

      本文链接:https://www.haomeiwen.com/subject/ksnvvctx.html