Appearance
中间件
温馨提示
中间件主要用于拦截或过滤应用的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
{}