**1.**拦截
登录功能需要拦截其他页面,或者登录其他页面重定向到我们指定页面
2.HandlerInterceptor中含有的preHandle方法利用request的请求获取session
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session=request.getSession();
Object userName = session.getAttribute("userName");
if(userName==null){
//重定向
response.sendRedirect("/");
//不让controller 处理请求
return false;
}else{
//放行 让controller处理请求
return true;
}
}
}`
判断session中的id和密码是否符合
boolean result= userService.verify(userName ,password);
if(result){
req.setAttribute("userName", userName);
}
如果返回true,获取一个值。如果值不等于空就放行,等于空就转入登录页面。
3.配置拦截器的配置
不是所有页面都拦截比如图片,css格式
@Configuration
public class LoginConfig implements WebMvcConfigurer{
//registry 拦截器注册中心
public void addInterceptors(InterceptorRegistry registry) {
//ir 是登录拦截器的注册信息
InterceptorRegistration ir = registry.addInterceptor(new LoginInterceptor());
ir.addPathPatterns("/**/*");
ir.excludePathPatterns("/","/login","/**/*.js","/**/*.css","/**/*.png","/**/*.gif","/**/*.eot","/**/*.svg","/**/*.ttf","/**/*.woff","/**/*.woff2");
}
}