Spring MVC AngularJS页面刷新/重定向

时间:2017-03-05 23:34:58

标签: angularjs spring session-management

我在我的应用程序中使用带有spring mvc的angularjs。它是一个单页面应用程序,其中有一个登录按钮和多个选项卡。除非用户登录,否则选项卡不可见。用户登录后,选项卡将可见(登录按钮将不可见),用户可以在任何选项卡下导航和使用功能。所有这些操作的URL都是相同的(例如:www.xyz.com/context/)。

我在这里遇到会话管理问题。如果会话在用户处于任何这些选项卡中时到期,请说明选项卡号。 3,页面应重置为初始状态,其中登录按钮可见而标签不可见。

我已经配置了如下所示的春季会话管理

<security:session-management invalid-session-url="/invalidSession">
     <security:concurrency-control expired-url="/" />
</security:session-management>

在会话到期时,我配置了spring mvc控制器来处理它。如下所示。

@RequestMapping(value="/invalidSession", method = RequestMethod.GET)
public ModelAndView invalidSession () {
    ModelAndView model = new ModelAndView("redirect:/");
    model.setStatus(HttpStatus.);
    return model;
}

虽然在会话到期时调用此方法,但重定向不会将我的页面重置为其初始状态,其中只有登录按钮可见。相反,它在选项卡号中保持相同的状态。 3,所有其他选项卡仍然可见。如果我点击浏览器刷新按钮,它可以正常工作。

我也尝试在上面的控制器方法中使用model.setStatus(HttpStatus.RESET_CONTENT);,它仍然无法正常工作。

我在Spring security and angular javascript redirect to login page中完成了这个问题,但是我的要求有点复杂,而且我的要求非常简单。我想我们应该能够通过spring的会话管理来处理它,并通过适当的重定向来重置我的页面。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

确定。我采取了一种有棱角的方法。我使用了Angular session timeout and management中概述的组件ng-idle。

另外,我已经删除了spring session-management标签,因为ng-idle解决了我的要求。