管理员登录时,用户无法登录


User cannot login when admin is logged in

我的项目有问题。当管理员登录时,没有前端用户可以在同一浏览器中登录,为什么会这样?但是当我销毁cookie然后尝试以用户身份登录时,它会正确登录。

我该如何解决这个问题?

任何主要的浏览器只会为一个网站存储一个会话cookie,但网站开发人员可以选择该cookie中的内容。您的网站似乎将用户信息存储在会话 Cookie 中,然后当另一个选项卡在同一 Cookie 中存储不同的信息时,该信息会被覆盖。

您没有提供有关特定网站如何运行的详细信息,但这里有一些解决此问题的一般方法。

1)为不同的用户使用不同的浏览器。不同的浏览器不会在它们之间共享 Cookie。如果您的目标只是与多个用户一起测试您的网站,那么这就是方法。您还可以使用隐身/私人模式登录单独的用户,因为此模式也不会共享 Cookie。

2) 请勿使用会话 Cookie 来存储用户信息。这在大多数网站上是不可能的,但如果这是一个内部网站或严格控制的环境,您可以通过 URL、POST 数据或请求中的其他一些隐藏标识符传递用户标识。

3) 在会话 Cookie 中存储所有当前登录用户的数据。根据Web框架,可以创建用户->cookieData的映射,并根据发出请求的用户查找正确的映射。这是一种先进的技术,我实际上不知道Laravel是否暴露了这种级别的控制。

Harshad很好地

涵盖了所有方面,但是当我想使用不同的用户权限(同一浏览器)进行测试时,我可以说出我使用的小技巧。就我而言,这是Windows身份验证,但没关系:

1) 在用户级别定义一个标志(例如 SuperUser )。它可以是 0(假)或 1(真)。

2) 允许"模拟" - 如果管理员设置了超级用户标志,他/她可以更改其角色/权限,并查看站点,就好像他/她是具有该特定权限的普通用户一样,但用户管理部分仍然可以访问,以允许更改权限。

3) 用户

管理部分只需稍作更改即可实现SuperUser安全(即,如果用户没有管理员角色,则显示该部分,但标记为超级用户)

因此,您以单个用户身份进行测试,不需要多个会话 cookie 或其他技巧。您可以打开一个带有用户配置文件的选项卡和其他选项卡来执行实际测试。

注意:关于多浏览器建议,对于开发人员来说,这是一个快速的解决方案,但在企业环境中,这可能是一个真正的问题,因为用户(例如.key必须测试安全性的用户)无法访问多个浏览器。