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

时间:2016-03-02 05:59:32

标签: php session authentication laravel-5 multi-user

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

您没有提供有关特定网站如何运作的详细信息,但以下是解决此问题的一些常用方法。

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

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

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

答案 1 :(得分:0)

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

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

2)允许“冒充” - 如果管理员设置了超级用户标记,他/她可以更改其角色/权限并将该网站视为他/她是具有该特定用户的普通用户权限,但仍可访问用户管理部分,以允许更改权限。

3)用户管理部分需要进行少量更改以允许SuperUser安全性实施(即如果用户没有管理员角色,则会显示该部分,但它被标记为超级用户)

因此,您作为单个用户进行测试,不需要多个会话cookie或其他技巧。您可以使用您的用户配置文件打开一个选项卡,然后使用其他选项卡进行实际测试。

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