管理员访问以编辑任何用户的配置文件 - 会话问题

时间:2014-07-10 17:22:25

标签: php session authorization

我已经制作了一个将被许多用户使用的PHP应用程序。当用户登录时,我创建会话并在会话中保留用户ID和一些其他详细信息。当用户编辑他的个人资料时,会有一些ajax请求。所以我绝不暴露用户ID。但我总是参考会议。即使用户保存了他的个人资料,控制器也会从会话中获取id,然后将其传递给模型。

现在有一位管理员,他应该能够查看/编辑任何个人资料。这个完成了。我有一个带有用户表的管理页面。当他点击任何播放器时,它会转到另一个控制器,该控制器为该用户创建会话,然后管理员可以编辑该配置文件。任何来自管理页面的请求,会话首先被删除,保持管理变量处于活动状态,然后附加用户会话。

问题:当管理员尝试一次查看多个配置文件时,他可以这样做。但是当管理员尝试同时编辑多个配置文件(为每个用户打开新的浏览器选项卡)时,它会失败,因为他打开的最后一个选项卡会为该特定用户设置新会话。

如何克服这种情况?我有什么选择?有可能吗?

我不想在所有网址上附加用户ID。它们并不安全,特别是对于更新/删除的网址。

1 个答案:

答案 0 :(得分:0)

答案简短:

如果它位于管理面板下,您可以传递用户的ID,这是安全的,您信任您的管理员吗?

答案很长(我自己的想法):

将引用,唯一ID存储到用户,并将其与会话变量配对。 例如:

$_SESSION['editing_users'][YOUR_USER_ID] = uniqid();

然后以表格形式打印。

提交表单后,您应该获取变量,通过带有隐藏属性的输入传递。 在会话数组中查找唯一ID,并从密钥中获取目标用户的ID。