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?
最后一个问题!!
一开始,我以为我不需要那个<session-management>
标签。
但是,如果没有那个标签,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)实现长期登录会话