1、使用composer安装
#使用1.0以上版本
composer require tymon/jwt-auth 1.*@rc
2、进行一些配置(Laravel5.4及以下版本,5.5及以上版本无需添加)
将下面这行添加至 config/app.php 文件 providers 数组中:
#文件:app.php
'providers' => [
// other code
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
]
3、发布配置文件
# 这条命令会在 config 下增加一个 jwt.php 的配置文件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
4、生成加密密钥
php artisan jwt:secret
5、更改 User Model(增加下面两个方法)
6、注册两个 Facade
这两个 Facade 不是必须的,但是使用它们会给你的代码编写带来一点便利。
config/app.php
#
'aliases' => [
...
// 添加以下两行
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
],
如果你不使用这两个 Facade,你可以使用辅助函数 auth ()
auth () 是一个辅助函数,返回一个 guard,暂时可以看成 Auth Facade。
// 如果不用 Facade,你可以这么写
auth('api')->refresh();
// 用 JWTAuth Facade
JWTAuth::parseToken()->refresh();
7、修改 auth.php
config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt', // 原来是 token 改成jwt
'provider' => 'users',
],
],
8、注册一些路由
注意:在 Laravel 下,route/api.php 中的路由默认都有前缀 api 。
Route::post('login', 'AuthController@login');
Route::middleware("auth:api")->group(function () {
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::get('me', 'AuthController@me');
});
9、创建 token 控制器
php artisan make:controller AuthController
AuthController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AuthController extends Controller
{
protected function respondWithToken($token)
{
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth('api')->factory()->getTTL() * 60
]);
}
public function login(){
$data = request(['name','password']);
// dd($data);
if($token = auth('api')->attempt($data)){
return $this->respondWithToken($token);
}
return response()->json(['error'=>'Unauthorized'],401);
}
public function me()
{
// dd(11);
return response()->json(auth('api')->user());
}
public function logout(){
$data = auth('api')->logout();
return response()->json(['msg'=>'success','data'=>$data]);
}
}
10、token 的获取、使用、删除
获取token
使用token
删除token