【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes

经历了一堆花里胡哨的问题,终于开始看鉴权了。。。

默认配置

【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第1张图片
默认的配置是这样。
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第2张图片
也就是这几个接口是session
在这里插入图片描述
这个是token

试一下

在这里插入图片描述
在这里插入图片描述
然后这个目录多了个session
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第3张图片
内容:

a:4:{s:6:"_token";s:40:"BWaXPuNaTWrvRs5TJE9fCh1UQYJmyscg3dyJ3Dlz";s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}s:9:"_previous";a:1:{s:3:"url";s:29:"http://blog_laravel.test:8080";}s:50:"login_web_59ba36addc2b2f9401580f014c7f58ea4e30989d";i:1;}

再试下JWT

参考:
https://learnku.com/laravel/t/27760
https://learnku.com/articles/10885/full-use-of-jwt

composer require tymon/jwt-auth 1.*@rc

报错了
在这里插入图片描述
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第4张图片
好像。。。版本不兼容?

换5.6版本

【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第5张图片
php artisan key:generate

再安装,果然好了
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第6张图片

开始使用

参考:https://learnku.com/articles/10885/full-use-of-jwt

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

# 这条命令会在 .env 文件下生成一个加密密钥,如:JWT_SECRET=foobar
php artisan jwt:secret

下面的更建议看git提交(5.6分支)

User:
getKey();
    }

    /**
     * Return a key value array, containing any custom claims to be added to the JWT.
     *
     * @return array
     */
    public function getJWTCustomClaims()
    {
        return [];
    }
}

控制器:
middleware('jwt.auth', ['except' => ['login']]);
        // 另外关于上面的中间件,官方文档写的是『auth:api』
        // 但是我推荐用 『jwt.auth』,效果是一样的,但是有更加丰富的报错信息返回
    }

    /**
     * Get a JWT via given credentials.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function login()
    {
        $credentials = request(['email', 'password']);

        if (! $token = auth('api')->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        return $this->respondWithToken($token);
    }

    /**
     * Get the authenticated User.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function me()
    {
        return response()->json(auth('api')->user());
    }

    /**
     * Log the user out (Invalidate the token).
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function logout()
    {
        auth('api')->logout();

        return response()->json(['message' => 'Successfully logged out']);
    }

    /**
     * Refresh a token.
     * 刷新token,如果开启黑名单,以前的token便会失效。
     * 值得注意的是用上面的getToken再获取一次Token并不算做刷新,两次获得的Token是并行的,即两个都可用。
     * @return \Illuminate\Http\JsonResponse
     */
    public function refresh()
    {
        return $this->respondWithToken(auth('api')->refresh());
    }

    /**
     * Get the token array structure.
     *
     * @param  string $token
     *
     * @return \Illuminate\Http\JsonResponse
     */
    protected function respondWithToken($token)
    {
        return response()->json([
            'access_token' => $token,
            'token_type' => 'bearer',
            'expires_in' => auth('api')->factory()->getTTL() * 60
        ]);
    }
}
路由:
Route::group([
    'prefix' => 'auth'
], function ($router) {

    Route::post('login', 'AuthController@login');
    Route::post('logout', 'AuthController@logout');
    Route::post('refresh', 'AuthController@refresh');
    Route::post('me', 'AuthController@me');

});
配置:

config/app.php

'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',
    ],
],

开始实践

【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第7张图片
结果我怎么请求都是404.。。
然后一查路由
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第8张图片
【记录 撸一个博客系统】 09.登陆注册-看看laravel自带的鉴权-正式开始 unserialize(): Error at offset 0 of 81 bytes_第9张图片
OK

下一篇讲讲JWT的原理

你可能感兴趣的:(PHP)