同一浏览器中的多个用户会话

时间:2018-10-25 14:59:41

标签: php symfony session symfony-3.3

当前应用:

我正在使用的应用具有单个用户实体。

使用存储在数据库(is_manager)中的布尔属性,用户可以是“成员”或“管理员”。

所有用户都通过相同的路由(/登录)进行连接,并根据is_manager属性进行重定向。

这是我的问题

该客户端要在同一浏览器的一个选项卡中以“成员”身份登录,而另一用户以“ manager”身份登录。 在同一浏览器中不能同时有几个“成员” /“经理”。

如何使用Symfony 3.3实现它? 根据我的想法,会话ID应该取决于is_manager属性,但我不确定,也不知道如何使用Symfony。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以使用User switching来解决此问题。他们没有以成员或管理员身份登录,而是以具有角色ROLE_ALLOWED_TO_SWITCH的用户身份登录。然后,您可以使用添加的属性?_switch_user=member_user?_switch_user=manager_user提供指向他们想要查看的页面的链接。这些用户都必须存在并且需要正确的权限。

这可能并不完美,例如,您必须为1个帐户维护3个不同的用户,并且必须确保他们在切换角色后不会意外执行操作,但这是我能想到的最好方法,支持这种切换。

答案 1 :(得分:0)

您需要调整用户管理系统。您可以在会话中放入一些变量,以使系统以某种方式(危险或用户)运行,但如果它必须取决于打开的选项卡,那么我能想到的最佳方法就是使用url。在URL上放置某种令牌(当然是安全令牌),该令牌告诉您的系统如何与该用户打交道。

采用这种方法,如果用户关闭选项卡,则该选项卡将至少在其角色之一下自动注销。

因此,您可以执行标准的登录过程,设置管理员角色的会话(特权更高的用户)并进行构建,并向用户显示非管理员版本的链接。该网址包含提及的令牌,如果他关闭标签页并希望恢复标签页,则应转到管理员页面并再次点击链接。