首先,我的loginInterceptor如下所示:
public class LoginInterceptor extends HandlerInterceptorAdapter{
private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception{
if (req.getSession().getAttribute("loginId") == null) {
res.sendRedirect("signin");
return false;
}
return true;
}
}
如果用户未登录,则仅重定向到登录页面。现在,如果有人成功登录,我想重定向到其他页面,而不使用Spring Security。我第一次使用Google搜索,它只向我展示了Spring Security,但我需要在不使用Spring Security的情况下执行此操作。我尝试了其他声明,但没有发生新的事情有什么我可以做到实现我想要的吗?提前谢谢。
我使用的是Spring MVC + Java。
答案 0 :(得分:1)
根据javadocs
返回:如果执行链应该继续下一个,则返回true 拦截器或处理程序本身。否则,DispatcherServlet假定 这个拦截器已经处理了响应本身。
所以在你的其他代码中它应该返回false
答案 1 :(得分:0)
返回true - "确定继续"
返回false - "停止继续" (然后你必须有一个重定向,否则它会停止我认为)
如果您需要始终从LoginInterceptor:preHandle
重定向,请尝试以下内容
public boolean preHandle(...){
if (req.getSession().getAttribute("loginId") == null) {
res.sendRedirect("signin");
}else{
res.sendRedirect("home");//You have already logged in
}
return false; //Spring stops interceptor channing
}
以上代码存在问题,它总是会重定向到" home"对于已登录的用户,即使是截取LoginInterceptor
网址格式的其他网址格式。
我认为您发布的代码很好,其他地方也有问题。