小编kev*_*olo的帖子

使用Spring启动拦截器重定向

我使用spring boot和freemarker创建了一个Web应用程序,并实现了拦截器(HandlerInterceptorAdapter).

在拦截器内部,当用户未登录时,它将重定向到登录页面.这很好用.但问题是控制器在重定向到登录页面之前首先被执行.

我的拦截器代码:

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
        User userSession = (User) request.getSession().getAttribute("user");
        if (userSession == null) {
            response.sendRedirect("/login");
        }
    }
Run Code Online (Sandbox Code Playgroud)

控制器类(在response.sendRedirect之后,此控制器仍然被执行).为什么?我陷入了这个问题.

@RequestMapping("/home")
    public String home(Model model, HttpServletRequest httpServletRequest) {

        String returnPage = "home-admin";

        User user = (User) httpServletRequest.getSession().getAttribute("user");
        if(user != null){
            String accessType = accessTypeRepository.getAccessType(user.getAccessId());
            if(StrUtil.isEqual(accessType, AccessTypeConst.MANAGER.getType())){
                returnPage = "home-manager";
            }
        }
        return returnPage;
    }
Run Code Online (Sandbox Code Playgroud)

redirect spring spring-mvc interceptor spring-boot

2
推荐指数
1
解决办法
6805
查看次数

标签 统计

interceptor ×1

redirect ×1

spring ×1

spring-boot ×1

spring-mvc ×1