我使用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)