1、编写拦截器,返回json
@Component
public class SecurityInterceptor implements HandlerInterceptor {
Logger log = LoggerFactory.getLogger(SecurityInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String url = request.getRequestURL().toString();
log.info(url);
HttpSession session = request.getSession();
//是否登录
System.out.println(url.endsWith("login"));
if (session.getAttribute("user") != null ) {
return true;
}else {
returnJson(response);
return false;
}
}
/**
* 返回json,前后端分离
* @param response
*/
private void returnJson(HttpServletResponse response) {
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
try {
writer = response.getWriter();
writer.print("{\"message\":\"请先登录系统\"}");
} catch (IOException e) {
e.printStackTrace();
}finally {
if(writer!=null) {
writer.close();
}
}
}
}
2、注册拦截器
@Configuration
public class webConfig implements WebMvcConfigurer {
@Autowired
SecurityInterceptor securityInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册自定义拦截器
InterceptorRegistration interceptor = registry.addInterceptor(securityInterceptor);
//拦截url
interceptor.addPathPatterns("/wcs/**");
//去除error和login
interceptor.excludePathPatterns("/error");
interceptor.excludePathPatterns("/login**");
}
}