2014-02-17 39 views
0

我在做一个web项目。其中一个要求是能够在一个浏览器中登录2个不同的用户帐户。Spring Security 2 userdetail在一个会话中

例如,如果我有www.myproject.com/member登录,并且我打开一个新选项卡并说我这次再次登录管理员www.myproject.com/admin。现在,如果我尝试访问我的一些用户功能,比如www.myproject.com/member/user-detail,那么我的访问被拒绝了。我明白为什么,因为spring security一次只能保存1个用户的详细信息。我想要的是在一个浏览器中登录不同角色的多个帐户。

现在你知道任何有关如何完成此任务的工作吗?

编辑:

我希望能够,只要用户登录有不同的角色在多个浏览器标签登录。

+0

打开一个新的私人窗口;) – Mannekenpix

+0

认真地说,这是如何解决? – stackjc

+0

问题是:你将如何处理哪个请求属于哪个用户?你必须编写一个完整的自定义实现。我认为这是一个非常糟糕的主意。这将不再以工作为例:SecurityContextHolder.getContext()。getAuthentication();为什么这样的要求? – Mannekenpix

回答

0

对于将安全令牌存储在单个Cookie中的网站,您看到一个标签注销另一个标签的行为是正常的。这是因为春季安全cookie由域名和登录路径存储(类似于www.myproject.com/login)。

要查看此功能,请使用Chrome调试器或Firebug查看应用程序的Cookie。

大多数web应用程序的行为都是这样的,例如gmail直到不久以前,它具有完全相同的行为:在一个标签中登录,在另一个标签上登出不同的用户。

最近在gmail中进行了更改,这意味着它们不再将安全令牌存储在单个cookie中,如弹簧安全性。他们不太可能在Javascript中公开安全令牌,它应该仍然在HttpOnly cookie中。可能在每个请求中,请求标头被填充哪个用户来考虑。

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

+0

我读了这个帖子,这和我的问题很相似。 [链接](http://forum.spring.io/forum/spring-projects/security/110030-how-to-enable-multiple-user-logins-on-multiple-browser-tabs-or-instances)。我还没有尝试过春季webflow,所以我试图做一些阅读文件,但我看不到我怎么能解决我的问题,使用它。 – stackjc

相关问题