首页 文章

如果用户在注销后点击页面中的任何链接,则应将其重定向到登录页面 . 我正在使用Spring MVC

提问于
浏览
0

假设用户在两个不同的选项卡中打开了我的应用程序的2个不同页面 . 如果用户从第一个选项卡注销并在另一个选项卡上执行某些操作,则必须将其重定向到index.jsp(登录页面) . 这是理想情况下应该发生的事情 . 但在我的情况下,在第二个选项卡中抛出了NullPointerException,因为当用户已从第一个选项卡注销时,session为null . 为了避免这个问题,我添加了一个检查我的控制器的pageLoad方法

HttpSession session = pRequest.getSession(false);
    if (session == null) {
    Map lDataMap = new HashMap();
    return new ModelAndView("index", lDataMap);
}

但我无法从我的所有控制器方法返回ModelAndView对象 . 因为我的控制器中很少有使用DWR从JavaScript调用的方法 . 他们正在返回布尔值 . 我不能改变他们的回报类型 .

我需要一个不同的解决方案来避免这个问题 . 主要问题是想要在用户退出后再次登录之前阻止用户进入应用程序 .

2 回答

  • 0

    我建议使用一个管理登录状态的Servlet过滤器 .

    登录状态应该是会话的设置属性,而不是非空会话!

    如果你google登录servlet过滤器有很多例子,例如:How implement a login filter in JSF?

  • 0

    禁用缓存将阻止用户在注销后进入应用程序,直到他再次登录 . 需要以下配置:

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <property name="cacheSeconds" value="0" />
    </bean>
    

    用例演示:http://www.youtube.com/watch?v=vR6jYVEMJS0&list=UUdFttVqX3UDsia9U8mcJzUg

相关问题