我的代码
public class WebLoginInterceptor implements HandlerInterceptor {
@Autowired
private WeixinConfig weixinConfig;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURI();
System.out.println("WebLoginInterceptor:" + url);
HttpSession session = request.getSession();
UserWeb userWeb = (UserWeb) session.getAttribute(WebConst.SESSION_USER_WEB);
if (userWeb != null) return true;
/** 用户未登录则引导访问如下请求 */
String redirect_uri = "http://tmos.s1.natapp.cc/web/cs/weixin/auth";
String link = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + weixinConfig.getAppID() + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
response.sendRedirect(link);
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
public class AdminLoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURI();
System.out.println("AdminLoginInterceptor:" + url);
HttpSession session = request.getSession();
UserAdmin userAdmin = (UserAdmin) session.getAttribute(WebConst.SESSION_USER_ADMIN);
if (userAdmin != null) return true;
response.sendRedirect("/admin/login");
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
@Configuration
public class LoginInterceptorConfigurer extends WebMvcConfigurerAdapter {
@Bean
WebLoginInterceptor webLoginInterceptor() {
return new WebLoginInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
registry.addInterceptor(webLoginInterceptor()).addPathPatterns("/web/**").excludePathPatterns("/web/cs/weixin/auth").excludePathPatterns("/web/map/**");
registry.addInterceptor(new AdminLoginInterceptor()).addPathPatterns("/admin/**").excludePathPatterns("/admin/login");
super.addInterceptors(registry);
}
}