在登陆处理中往往需要配置拦截器,用户只能从登陆页面中访问后台数据,要想实现这个功能只能通过拦截器来实现,
首先先创建一个拦截类,这个拦截类实现HandlerInterceptor接口,
public class MyInterceptor implements HandlerInterceptor {
//springboot拦截器
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getSession().getAttribute("userName") != null){
return true;
}else {
request.getRequestDispatcher("/sign.html").forward(request,response);
return false;
}
}
如果session没有数据的话,是转发到sign.html中的,但是这里没有自定义视图跳转是跳转不到templates的.html页面的,所以这里还需要自定义一个视图跳转。
//自定义视图跳转
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/sign.html").setViewName("sign");
}
然后在创建一个配置类,把需要放行的页面进行设置
@Configuration
public class MyConfig implements WebMvcConfigurer {
//自定义视图跳转
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/sign.html").setViewName("sign");
}
@Bean
public HandlerInterceptor handlerInterceptor(){
return new loginInterceptor();
}
//配置拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(handlerInterceptor()).addPathPatterns("/**")
.excludePathPatterns("/User/TO","/User/index","/sign.html","/User/Login");
}
}
> .excludePathPatterns("/index.html","/sign.html","/User/Login");
> 这些是需要放行的页面,拦截器是固定死的,只需要把放行路径改动即可。
只需要两步,springboot的拦截器就已经配置完成了。