用户登录状态拦截——拦截器
(1)LoginInterceptor
拦截到请求后,检查是否登录过(通过用户的Session信息),登录过则直接返回ture,允许继续访问;没有登录则直接跳转到登录页面。
package com.glp.config;
@Component //注册到Spring容器中
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try{
HttpSession session = request.getSession();
User user = (User)session.getAttribute("user");
if(user!=null){
return true;
}
//登录不成功,直接跳转到登录页面
response.sendRedirect(request.getContextPath()+"/login.html");
}catch (IOException o){
o.printStackTrace();
}
return false;
}
}
(2)MyConfig
package com.glp.config;
@Configuration
public class MyConfig implements WebMvcConfigurer {
@Autowired
private LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//添加一个拦截器
registry.addInterceptor(loginInterceptor).
// 拦截配置
addPathPatterns("/**").
// 排除配置
excludePathPatterns("/**/loginServlet").
excludePathPatterns("/**/registerServlet").
excludePathPatterns("/**/login.html").
excludePathPatterns("/**/register.html").
excludePathPatterns("/**/*.js")
.excludePathPatterns("/**/*.css").
excludePathPatterns("/**/*.png").
excludePathPatterns("/**/*.jpg");
}
addInterceptor
:添加一个拦截器,将拦截下来的路径交给它来处理
addPathPatterns
: 拦截配置
excludePathPatterns:
排除配置
排除配置中主要将登录和注册的静态页面Html以及servlet请求中的动态页面都给放行,对于其他的页面都要进行拦截。
注意我们在拦截时采用了addPathPatterns("/**")
.,即所有的内容都给拦截包括静态内容,为了简单起见,在这里我们直接采用暴力的方法,对我们所要用到的静态内容,js,css,png,jpg等都给放行,