A-A+

laravel+JWT

2021年08月09日 Laravel 暂无评论 阅读 3,563 views 次

一、什么是JSON Web Token (JWT)

JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且独立的方式,可以在各方之间作为JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。

参考:

知乎:《五分钟带你了解啥是JWT》

简书:《什么是 JWT》

 

 

二、Laravel轻松配置JWT

参考文档:https://jwt-auth.readthedocs.io/en/develop/

packagist地址:https://packagist.org/packages/tymon/jwt-auth

安装案例:

《Laravel 中使用 JWT 认证的 Restful API》

《Laravel 安装 jwt 及基本使用》

 

1、composer安装

composer require tymon/jwt-auth

2、生成 config/jwt.php

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

3、生成 JWT 密钥

php artisan jwt:secret

4、注册中间件:

JWT 认证扩展包附带了允许我们使用的中间件。在 app/Http/Kernel.php 中注册 auth.jwt 中间件:

protected $routeMiddleware = [

....

'auth.jwt' => \Tymon\JWTAuth\Http\Middleware\Authenticate::class,

];

5、设置路由

打开 routes/api.php,参考以下内容

Route::post('login', 'ApiController@login');

Route::post('register', 'ApiController@register');

 

Route::group(['middleware' => 'auth.jwt'], function () {

Route::get('logout', 'ApiController@logout');

Route::get('user', 'ApiController@getAuthUser');

Route::get('products', 'ProductController@index');

Route::get('products/{id}', 'ProductController@show');

Route::post('products', 'ProductController@store');

Route::put('products/{id}', 'ProductController@update');

Route::delete('products/{id}', 'ProductController@destroy');

});

 

6、修改User模型

JWT 需要在 User 模型中实现 Tymon\JWTAuth\Contracts\JWTSubject 接口。 此接口需要实现两个方法  getJWTIdentifier 和 getJWTCustomClaims。使用以下内容更新 app/User.php 。

 

 

 

 

标签:

给我留言