Skip to content
导航目录

中间件

温馨提示

中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理;该框架中间件使用了全局中间件,管理员端中间件,用户端中间件,

全局中间件

1. 请求签名验证中间件

  • 请求签名验证目的是防止参数在传输过程中被篡改
  • 在管理后台,密钥设置中 进行开启和关闭请求验证签名
  • 在文件 app\middleware.php 中添加全局中间件app\middleware\CheckSign::class
  • 在请求中添加参数signature,签名算法如下
bash
#全部参数
$param     = $request->param();
#去掉签名字段
unset($param['signature']);
#去掉富文本字段
unset($param['content']);

#对参数数组排序
ksort($param);
#数组转成字符串
$str        = http_build_query($param);

#空格 + 转 %20,~ 处理
$str = str_replace('+','%20',$str);
$str = str_replace('%7E','~',$str);
$signature1 = md5(sha1($str) . $app['app_salt']);

管理员端中间件

1. 用户登录token验证中间件

  • 文件位置app\admin\middleware\CheckAdmin.php
  • 验证token合法性,获取当前用户信息
bash
class CheckAdmin
{
    public function handle($request, \Closure $next)
    {
        // JWT用户令牌认证,令牌内容获取
        $userToken = $request->header('x-access-token');
		$user = AdminService::checkAdmin($userToken);
        $request->sys_user = $user['user'];
        return $next($request);
    }
}

2. 中间件使用

  • 在类注释中使用Middleware类进行引入
bash
use think\annotation\route\Middleware;
use app\admin\middleware\CheckAdmin;

/**
 * 个人中心
 * Class User
 * @Middleware({CheckAdmin::class})
 */
class User extends Center
{}

用户端中间件

1. 用户登录token验证中间件

  • 文件位置app\api\middleware\CheckUser.php
  • 验证token合法性,获取当前用户信息
bash
class CheckUser
{
    public function handle($request, \Closure $next)
    {
        // JWT用户令牌认证,令牌内容获取
        $userToken = $request->header('x-access-token');
        $user = UserService::checkUser($userToken);
        $request->sys_user = $user['user'];
        return $next($request);
    }
}

2. 中间件使用

  • 在类注释中使用Middleware类进行引入
bash
use think\annotation\route\Middleware;
use app\api\middleware\CheckUser;

/**
 * 个人中心
 * Class User
 * @Middleware({CheckUser::class})
 */
class User extends Center
{}

欢迎使用HardAdmin