init: 项目初始代码
This commit is contained in:
79
app/api/middleware/Auth.php
Normal file
79
app/api/middleware/Auth.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
namespace app\api\middleware;
|
||||
|
||||
use think\facade\Cache;
|
||||
use think\facade\Config;
|
||||
use think\facade\Env;
|
||||
use utils\Jwt;
|
||||
|
||||
/**
|
||||
* 全局路由中间件-验证权限
|
||||
* Class Auth
|
||||
* @package app\api\middleware
|
||||
*/
|
||||
class Auth
|
||||
{
|
||||
public function handle($request, \Closure $next)
|
||||
{
|
||||
header("Access-Control-Allow-Origin:*");
|
||||
header("Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE,OPTIONS");
|
||||
header("Access-Control-Allow-Credentials:true");
|
||||
header("Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With,x_requested_with,x-token");
|
||||
$config = [
|
||||
'iss' => Env::get('jwt_config.iss'),
|
||||
'exp' => Env::get('jwt_config.exp')
|
||||
];
|
||||
$jwt = new Jwt($config);
|
||||
$route = strtolower($request->pathinfo());
|
||||
$domain = strtolower($request->host());
|
||||
|
||||
if (in_array($route,Config::get('whitelist.route')) or in_array($domain,Config::get('whitelist.domain'))) {
|
||||
//表示此系列请求不需要鉴权,直接通行
|
||||
return $next($request);
|
||||
} else {
|
||||
//此系列请求需要鉴权。
|
||||
$loginToken = $request->header('x-token');
|
||||
$result = $jwt->checkToken($loginToken);
|
||||
if ($result < 0) {
|
||||
switch ($result) {
|
||||
case -1:
|
||||
show(-1,"token异常");
|
||||
break;
|
||||
case -2:
|
||||
show(-2,"token被篡改");
|
||||
break;
|
||||
case -3:
|
||||
show(-3,"token验签异常");
|
||||
break;
|
||||
case -4:
|
||||
show(-4,"token已过期");
|
||||
break;
|
||||
}
|
||||
} elseif ($result === 200 || $result === 201) {
|
||||
// token通过
|
||||
$adminInfo = $jwt->getUserInfo($loginToken);
|
||||
if (!isset($adminInfo['id'])) {
|
||||
show(-1001, '登录异常');
|
||||
}
|
||||
|
||||
if (empty($adminInfo) || $adminInfo['status'] == 1) {
|
||||
show(-1002, '登录异常');
|
||||
}
|
||||
|
||||
if ($result === 201) {
|
||||
$new_login_token = $jwt->getToken($adminInfo);
|
||||
$data = [
|
||||
'login_token' => $new_login_token,
|
||||
'exp' => Env::get('jwt_config.exp')
|
||||
];
|
||||
|
||||
header("Access-Control-Expose-Headers: X-Token-info");
|
||||
header("X-Token-info: " . base64_encode(json_encode($data)));
|
||||
}
|
||||
$adminInfo['auth_id_list'] = [];//权限菜单下发
|
||||
$request->admin_user_info = $adminInfo;
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user