我在后端加了个中间件,用于判定头信息是否携带登录token。如图:
namespace app\middleware;
use think\facade\Cache;
use think\facade\Request;
class Auth
{
//Api版登录验证中间件
public function handle($request, \Closure $next){
$token = substr(Request::header('Authorization') ? : 'Bearer xx',8);
//获取缓存中的登录信息
$login = Cache::get($token);
if (empty($login) && !preg_match('/login/',$request->pathinfo())){
return json(['msg' => '请先登录!'],401);
}else{
//更新缓存
Cache::set($token,$login,7200);
return $next($request);
}
}
}
前端添加了自定义请求头Authorization后就会报错,如图:
但是离奇的是 访问【添加中间件之前可以成功访问过的url】时并不会报错。参考下图:
注:thinkphp自带的跨域中间件已开启。
求各位指点指点~~
检查两个请求的header,应该是header参数不一致