Angularjs 和 Spring 会话管理

Posted

技术标签:

【中文标题】Angularjs 和 Spring 会话管理【英文标题】:Angularjs and Spring session management 【发布时间】:2015-06-23 16:25:27 【问题描述】:

我正在同时使用 angularjs 和 spring security。

一切都很好,但是会话管理问题还没有解决。

这是我的代码 => security.xml

<session-management invalid-session-url="/sessionout">
            <concurrency-control expired-url="/login" />
</session-management>

angularjs 路由器无法捕获 url /sessinout。所以我不知道如何处理这个问题。我必须做什么,来处理那个 url?

最后一个问题!! 一开始,我以为我不需要那个&lt;session-management&gt; 标签。 但是,如果没有那个标签,front 就无法识别会话已经结束。 angularjs如何处理spring安全会话?

【问题讨论】:

【参考方案1】:

迟到的回复,以帮助其他人搜索答案。你必须区分你的java控制器捕获的url和angularjs捕获的其他人。

如果在你的 app.js 中你有一个类似

的路径路径
 .when('/error/expired', 
      templateUrl: 'error/expired',
 )

Angularjs 将使用 hashbang 捕获以下 url

http://localhost/app/#/error/expired

如果您使用以下 url,在我的例子中使用 thymeleaf 进行模板,我有一些 java 控制器。

http://localhost/app/error/expired

您将通过相应的 url 访问 java 控制器

当然,如果 locationProvider 中的 html5 模式没有使用,这个解决方案也可以。

回答问题

<session-management invalid-session-url="/#/sessionout">

将被重定向到角根。

【讨论】:

以上是关于Angularjs 和 Spring 会话管理的主要内容,如果未能解决你的问题,请参考以下文章

如何为单页 AngularJS 应用程序实现基本的 Spring 安全性(会话管理)

会话超时时,如何从 Spring Security 向 angularjs 应用程序发送响应?

如何使用 Oauth2 和 javascript 客户端(Spring Oauth2 + Angularjs)实现长期登录会话

Angular会话超时和管理[重复]

Spring 上的 Apache Shiro 会话管理

Spring 安全会话管理和 Spring MVC 视图解析器错误