连初级都算不上的代码小白 2023-12-27 09:50 采纳率: 52.4%
浏览 32

springboot拦截器陷入死循环

TODO:登录拦截、当访问非login页面时拦截判断是否存在session、是则放行、否则跳转到login。访问login时直接放行

@Configuration
@Slf4j
public class MvcSupport extends WebMvcConfigurationSupport {
    @Autowired
    public loginInterceptor interceptor;
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        log.info("正在拦截中......");
        registry.addInterceptor(interceptor).addPathPatterns("/**");
    }
}

上面是拦截路径的设置

@Component
public class loginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String URI= request.getRequestURI();
        log.info("URI ======》"+URI);//此处URI为error
        if(URI.contains("login")){
            log.info("URI包含login、放行");
            return true;
        }
        if(request.getSession().getAttribute("employee")!=null){
            log.info("该用户已授权、成功进入系统");
            return true;
        }
        log.info("该用户无权限、返回登陆界面");
        response.sendRedirect("/backend/page/login/login.html");
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

当访问 http://localhost:8080/backend/page/login/login.html 时、为什么会出现重定向次数过多?

img


下面是项目结构

img

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 12月27日