前言
基础知识说明
- token是无状态的,帮助你验证用户是否具有查询api的权限,一般登录后即可生成。
- 拦截器下,解决swagger-ui的访问
拦截器
SpringBoot的拦截器,继承HandlerInterceptor
即可,重写preHandle
说明:
- IAuthService 是我验证token的服务类,可自行编写
- R.failed() 是mybatis-plus包中
- filter不能直接注入spring容器里面的对象
代码如下:
@Component
@Slf4j
public class LoginTokenFilter extends HandlerInterceptorAdapter {
@Autowired
IAuthService authService;
/**
* 请求进去controller进行请求拦截
*
* @param request 请求
* @param response 响应
* @param handler 处理
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取头部header 信息
String TOKEN = "x-access-token";
String token = request.getHeader(TOKEN);
//如果为空,表示未登录,禁止使用
if (StringUtils.isEmpty(token)) {
error(response, "您没有登录!");
return false;
} else {
//不为空,但是redis 中不存在,请重新登录
if (authService.checkLoginStatus(token)) {
log.info("token 验证通过...");
return true;