zhukangs / base-jwt
A base JWT
0.0.1
2020-01-07 09:12 UTC
Requires
- lcobucci/jwt: ^3.3
- predis/predis: ^1.1
This package is auto-updated.
Last update: 2024-05-07 19:34:46 UTC
README
在Laravel中使用
1.安装扩展包
composer require zhukangs/base-jwt
2.发布 src
下的核心代码
php artisan vendor:publish --provider="zhukangs\BaseJwt\ServiceProvider"
3.在 .env
下加上如下代码
JWT_KEY='basejwt' JWT_ACCESS_EXP=900 JWT_REFRESH_EXP=7200
4.编辑 app\Exceptions\Handler.php
,添加如下代码
public function render($request, Exception $exception) { if (Config::get('app.debug') === false) { if ($request->ajax()) { $message = $exception->getMessage(); $line = $exception->getLine(); $file = $exception->getFile(); $code = $exception->getCode(); return response()->json(['code' => 500, 'msg' => '请求发生错误!', 'data' => [ 'code' => $code, 'line' => $line, 'file' => $file, 'message' => $message, ]]); } else { return response()->view('base.404'); } } //对api的request返回数据格式化 if($request->is('api/*')){ //表单验证 if($exception instanceof ValidationException){ $error = array_first($exception->errors()); //return $this->message(array_first($error),$exception->status); return $this->message(array_first($error),'error'); } } // 将方法拦截到自己的ExceptionReport $reporter = ExceptionReport::make($exception); if ($reporter->shouldReturn()){ return $reporter->report(); } return parent::render($request, $exception); }
6.编辑 app\Http\Kernel.php
,添加如下代码
protected $middleware = [ ... \App\Http\Middleware\EnableCrossRequestMiddleware::class, ]; protected $routeMiddleware = [ .. 'auth.api' => \App\Http\Middleware\AuthApi::class, ];
7.移除
rm -rf vendor/zhukangs/BaseJwt/src/Api
8.登录例子
public function toLogin(Request $request) { $token_data = [ 'user_id' => '$user->id', 'email' => $request->email, ]; $token = $this->createAccessToken($token_data); return $this->success([ 'token' => $token, 'expires_at' => ($this->getPayload($token))['exp'], 'email' => $request->email, ]); }
9.需要 token
的路由
Route::group([ 'middleware' => 'auth.api' ], function () { Route::get('user', 'AuthController@user');//获取个人信息 });