# 权限拦截器
# MyMvcConfig
package com.xxx.config;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login");
}
}
# LoginInterceptor
package com.xxx.interceptor;
@Component
public class LoginInterceptor implements HandlerInterceptor {
@Autowired
IRedisService iRedisService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getMethod().equals("OPTIONS")) {
return true;
}
String token = request.getHeader("token");
if (null == token || token.isEmpty()) {
token = request.getParameter("token");
}
if (null == token || token.isEmpty()) {
String message = "{\"status\":401, \"data\":[], \"message\":\"token不能为空\"}";
response.setHeader("content-type", "application/json;charset=UTF-8");
response.getWriter().println(message);
return false;
}
String redisKey = "admin_" + token;
String tokenString = iRedisService.get(redisKey);
if (null == tokenString) {
String message = "{\"status\":401, \"data\":[], \"message\":\"登陆信息已过期\"}";
response.setHeader("content-type", "application/json;charset=UTF-8");
response.getWriter().println(message);
return false;
}
//放置到请求里
PassportRedisTokenDto passportRedisDto = JSONUtil.toBean(tokenString, PassportRedisTokenDto.class);
request.setAttribute("token", passportRedisDto);
return true;
}
}
← 断言异常类 Mybatis-Plus →