Compare commits

...

2 Commits

Author SHA1 Message Date
yaooo 6fa7ff22ca 更新登录token中间件 2023-11-13 10:38:07 +08:00
yaooo a2d10ead95 更新解析token解析 2023-11-13 10:36:33 +08:00
3 changed files with 62 additions and 2 deletions

View File

@ -14,6 +14,7 @@
return [
'middleware' => [
app\api\http\middleware\InitMiddleware::class, // 初始化
app\api\http\middleware\LoginMiddleware::class, // 登录验证
// app\api\http\middleware\LoginMiddleware::class, // 登录验证
app\api\http\middleware\LoginJwtMiddleware::class, // jwt验证
],
];

View File

@ -0,0 +1,59 @@
<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台PHP版
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用可去除界面版权logo
// | gitee下载https://gitee.com/likeshop_gitee/likeadmin
// | github下载https://github.com/likeshop-github/likeadmin
// | 访问官网https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\api\http\middleware;
use app\common\service\JsonService;
use app\api\service\JwtTokenService;
use think\facade\Config;
class LoginJwtMiddleware
{
/**
* @notes 登录验证
* @param $request
* @param \Closure $next
* @return mixed|\think\response\Json
* @author 令狐冲
* @date 2021/7/1 17:33
*/
public function handle($request, \Closure $next)
{
$token = $request->header('token');
//判断接口是否免登录
$isNotNeedLogin = $request->controllerObject->isNotNeedLogin();
//不直接判断$isNotNeedLogin结果使不需要登录的接口通过为了兼容某些接口可以登录或不登录访问
if (empty($token) && !$isNotNeedLogin) {
return JsonService::fail('请求参数缺token', [], 0, 0);
}
if (!$isNotNeedLogin) {
try {
$userInfo = JwtTokenService::parseToken($token);
$userInfo['user_id'] = $userInfo['uid'] ?? 0;
$request->userInfo = $userInfo;
$request->userId = $userInfo['uid'] ?? 0;
} catch (\Exception $e) {
return JsonService::fail($e->getMessage(), [], 0, 0);
}
if (empty($userInfo['user_id'])) {
return JsonService::fail('用户登录异常', [], 0, 0);
}
}
return $next($request);
}
}

View File

@ -40,7 +40,7 @@ class LoginMiddleware
//不直接判断$isNotNeedLogin结果使不需要登录的接口通过为了兼容某些接口可以登录或不登录访问
if (empty($token) && !$isNotNeedLogin) {
//没有token并且该地址需要登录才能访问, 指定show为0前端不弹出此报错
return JsonService::fail('请求参数缺token', [], 0, 0);
return JsonService::fail('请求参数缺token', [], 0, 0);
}
$userInfo = (new UserTokenCache())->getUserInfo($token);