Files
sentos/app/middleware/Check.php
2022-05-24 16:10:50 +08:00

62 lines
1.7 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
declare (strict_types = 1);
namespace app\middleware;
use think\App;
use think\Response;
use xiaodi\JWTAuth\Exception\JWTException;
class Check{
protected $app;
public function __construct(App $app){
$this->app = $app;
}
/**
* @title 处理请求
*
* @param [type] $request
* @param \Closure $next
* @param [type] $store
* @return void
*/
public function handle($request, \Closure $next, $store = null){
try {
$verify = $this->app->get('jwt')->store($store)->verify();
if (true === $verify) {
if ($this->app->get('jwt.user')->getBind()) {
if ($user = $this->app->get('jwt.user')->find()) {
// 路由注入
$request->user = $user;
// 绑定当前用户模型
$class = $this->app->get('jwt.user')->getClass();
$this->app->bind($class, $user);
// 绑定用户后一些业务处理
$this->bindUserAfter($request);
} else {
return Response::create(['message' => '登录校验已失效, 请重新登录', 'code' => 2000], 'json', 401);
}
}
return $next($request);
}
} catch (JWTException $e) {
return Response::create(['message' => $e->getMessage(), 'code' => 2000], 'json', 401);
}
}
public function bindUserAfter(){
}
}