实现登录功能拦截,如果未登录,需要对其进行拦截
步骤1:通过继承HandlerInterceptor来实现拦截器
public class LoginHandlerInterceptor implements HandlerInterceptor {
// 目标方法执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 因为登录时将用户信息放入到session中,所以先对session中的数据进行判断,
Object userName = request.getSession().getAttribute("userName");
if (userName!=null){
// 表明已登录过,则放行
return true;
}else {
// 没有权限,可通过request返回错误信息
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 {
}
}
步骤2:注册拦截器
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/hello").setViewName("success");
}
@Bean
public WebMvcConfigurer webMvcConfigurer(){
return new WebMvcConfigurer() {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
}
};
}
}
通过上述步骤,实现对登录功能的拦截处理,如果用户未登录,则对其进行拦截,若已登录,则放行。