1

我有一个多用户 Web 应用程序。如果管理员登录,则启用所有菜单。如果用户登录,则只允许使用有限的功能。

当某项任务需要用户注意时(例如分配给新项目),管理员会向用户发送一封带有正确页面 URL 的邮件。然后,用户可以导航到该页面(无需任何凭据)并采取必要的操作。

现在的问题是 - 当管理员登录系统时,会触发给用户的邮件,如果他没有注销。用户单击在另一个选项卡(IE/Chrome)或同一页面上打开页面的链接(在电子邮件中),用户可以看到管理员可用的所有选项。

虽然这不是一个以生产为中心的问题,但我在我的客户端演示中发现了这种安全漏洞。

此外,管理员和用户可以通过适当的菜单项访问用户尝试访问的页面。这限制了我在页面加载时设置一些条件。

现在,无论谁已经登录,我如何限制用户只看到允许他使用的选项?

4

2 回答 2

0

如果最后一个登录应用程序的用户是管理员并且没有正确注销,您可以设置会话超时以在您的 web.config 中自动注销用户:

<sessionState mode="StateServer" timeout="20" cookieless="false"/>

更多信息:会话状态 MSDN

于 2013-11-05T10:08:14.063 回答
0

Cookie 或 HTTP 身份验证将由同一浏览器的所有选项卡共享,因此如果您在已登录时单击链接,您将保持登录状态。

可能的解决方案:

  1. 在单击电子邮件中的链接之前,单击应用程序中的注销。
  2. 将链接复制并粘贴到生成链接以外的其他浏览器(例如,Chrome 而不是 Firefox)。
  3. 打开一个私人标签(例如 Chrome 中的隐身模式)并粘贴链接。
  4. 将您的默认浏览器设置为与演示开始位置不同的浏览器,以便单击电子邮件链接时它会在其他地方打开。
  5. 以包含参数的单独格式生成 URL,以通知应用程序使任何会话过期并请求重新授权。例如,如果您的链接是“ www.example.com/task/1232”,则电子邮件中的链接是“ www.example.com/task/1232/reauth”,这将使应用程序在允许访问之前要求输入用户名和密码。您可以扩展它并以“ www.example.com/task/1232/user/4545”形式提供 URL,如果用户尚未以用户 ID 4545 登录,应用程序只会要求重新授权。
于 2013-11-05T17:20:47.087 回答