一个会话中的Spring Security 2 userdetail

时间:2014-02-17 10:00:01

标签: spring spring-mvc spring-security

我正在做一个网络项目。其中一个要求是能够在一个浏览器中登录2个不同的用户帐户。

例如,如果我登录www.myproject.com/member并打开一个新标签,并说我这次再次登录管理员www.myproject.com/admin。现在,如果我尝试访问我的一些用户函数,比如www.myproject.com/member/user-detail,我将获得访问被拒绝的响应。我理解为什么因为Spring安全性一次只能保存1个用户细节。我想要的是在一个浏览器中登录不同角色的多个帐户。

现在你知道如何解决这个问题吗?

编辑:

只要登录的用户具有不同的角色,我希望能够在多个浏览器选项卡上登录。

1 个答案:

答案 0 :(得分:0)

对于具有存储在单个cookie中的安全令牌的站点,您看到一个选项卡注销另一个选项卡的行为是正常的。这是因为春天安全cookie是通过域名和登录路径存储的(类似www.myproject.com/login)。

要查看此内容,请使用Chrome调试程序或Firebug查看应用程序的Cookie。

大多数Web应用程序的行为都是这样的,例如直到不久前的gmail,它具有完全相同的行为:在一个选项卡中登录,在另一个选项卡上注销另一个用户。

最近在gmail中进行了更改,这意味着他们不再将安全令牌存储在像spring security一样的cookie中。他们不太可能在Javascript中公开安全令牌,它应该仍然在HttpOnly cookie中。可能在每个请求中都填写了一个请求标头,用户需要考虑该标头。

因此,在Web应用程序中每个选项卡可以有不同的登录名,但弹簧安全性 目前不支持开箱即用。有关如何实现它的一些想法,请参阅此question