成功登录后如何设置重定向页面(没有Spring Security)

时间:2016-04-27 05:47:24

标签: java spring spring-mvc

首先,我的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。

2 个答案:

答案 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网址格式的其他网址格式。

我认为您发布的代码很好,其他地方也有问题。