| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <?php
- namespace app\common\middleware;
- use app\exception\BaseException;
- use app\Request;
- use think\facade\Cache;
- class VerifySessionToken
- {
- /**
- * @param $request
- * @param \Closure $next
- * @return mixed
- * @throws BaseException
- */
- public function handle(Request $request, \Closure $next)
- {
- $params = $request->param();
- // if (isset($params['__TEST__']) && $params['__TEST__'] == __TEST__)
- // return $next($request);
- predicate(isset($params['session_token']),'session_token err');
- $redis = Cache::store('redis')->handler(); //返回句柄对象,可执行其它高级方法
- $is_exist = $redis->sismember('user:infos', $params['session_token']);
- predicate(!$is_exist, '未登录', 403);
- $jwt = \Jwt::verifyToken($params['session_token']);
- if($jwt == false) {
- $redis->srem('user:infos', $params['session_token']);
- predicate(false, '登录失效');
- }
- $request->setData($jwt['admin_id'], $jwt['nickname']);
- return $next($request);
- }
- }
|