2

大家好,如果我们可以说用户会话模拟,我可以帮助管理

我在我的应用程序中实现了角色架构,为了简单起见,假设我有 2 个角色

  • 系统管理员
  • 普通用户

当用户登录系统时,他们会被重定向到他们的特定模块 EX:如果用户是管理员,他们会被重定向到管理部分,到目前为止没有任何问题,这只是为了给你一些上下文。

系统管理员的功能之一是能够模拟普通用户帐户,这样他们就可以像普通用户一样执行任何操作,我这样做的方式很简单,我只需登录系统管理员并重新以用户身份进行身份验证,问题是当同一个管理员想同时在多个帐户中时,按照该方法,我用最新信息覆盖 cookie 会话,所以如果我有 2 个选项卡并且我决定转到上一个选项卡当我刷新选项卡时,系统管理员将获得的信息是最新的,所以我在考虑尝试混合无 cookie 会话以将所有信息放入 url 以理论上有多个 asp.net 会话的可能性。

所以问题是如果可能的话,如果系统默认使用cookie存储,我可以让两个系统同时运行吗?我可以默认使用cookie系统并通过编程设置无cookie系统吗?

我只是不想在所有操作中手动传递用户 ID,并自己通过查询字符串保留该信息,因为在这个阶段这实际上会破坏我的代码,我将不得不重构系统的很大一部分

任何评论都将受到欢迎!

4

2 回答 2

0

这看起来很老,但如果有人想知道,您可以AuthenticateRequest在应用程序生命周期中的事件期间将用户的身份替换为一个GenericIdentityandGenericPrincipal或您自己的实现IPrincipalandIIdentity接口的类。您如何确定哪些请求应该更改身份,哪些不应该基于会话变量(我倾向于尽可能避免这些)在所有窗口/选项卡中进行模拟,或者可能是查询字符串或表单字段以创建特定选项卡/ windows 作为其他用户运行。设置HttpContext.Current.User在请求期间是临时的,不会更改其FormsAuthenticationcookie。

于 2014-10-03T18:58:19.950 回答
0

在同一个浏览器中同时打开两个身份是不可能的。

我想到了两种选择:

  • 要求管理员打开其他浏览器或具有不同用户的同一浏览器(以 Chrome 为例)以同时操作两个身份。
  • 更改应用程序的方法:不要更改身份,而是为管理员提供用户下拉菜单。该操作将使用该用户执行以检索数据或其他任何内容。(当然取决于您的应用程序)
于 2013-01-23T18:36:24.007 回答