C# Asp.net MVC多用户会话/用户模拟

C# Asp.net MVC多用户会话/用户模拟,c#,asp.net,asp.net-mvc,forms-authentication,C#,Asp.net,Asp.net Mvc,Forms Authentication,嗨,伙计们,如果我们可以说是用户会话模拟的话,我能帮上点忙吗 我在应用程序中实现了角色模式,为了保持简单,假设我有2个角色 系统管理员 普通用户 当用户登录系统时,他们会被重定向到他们的特定模块例如:如果用户是管理员,他们会被重定向到管理部分,到目前为止没有任何问题。这只是给你一些上下文 系统管理员的一个功能是能够模拟普通用户帐户,这样他们可以作为普通用户执行任何操作,我这样做的方式很简单,我只是记录了系统管理员并作为用户重新验证,问题是,当同一个管理员希望同时在多个帐户中时,按照该方法,我

嗨,伙计们,如果我们可以说是用户会话模拟的话,我能帮上点忙吗

我在应用程序中实现了角色模式,为了保持简单,假设我有2个角色

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

系统管理员的一个功能是能够模拟普通用户帐户,这样他们可以作为普通用户执行任何操作,我这样做的方式很简单,我只是记录了系统管理员并作为用户重新验证,问题是,当同一个管理员希望同时在多个帐户中时,按照该方法,我会用最新信息覆盖cookie会话,因此,如果我有2个选项卡,例如,我决定在刷新选项卡时转到上一个选项卡,则系统管理员将获得的信息是最新的,因此,我在考虑尝试混合使用无Cookie会话的可能性,以便将所有信息输入url,从而在理论上拥有多个asp.net会话

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

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


欢迎发表任何评论

不可能在同一浏览器中同时打开两个标识

我想到了两种选择:

  • 要求管理员打开其他浏览器或具有不同用户的同一浏览器(如果是Chrome),以同时操作两个身份
  • 改变你的应用程序的方法:与其改变身份,不如向管理员提供一个用户下拉列表。该操作将使用该用户执行,以检索数据或其他内容。(当然取决于你的应用程序)

这看起来很旧,但如果有人想知道,您可以在应用程序生命周期中的事件中使用and或您自己的类替换用户身份,这些类实现了
IPrincipal
IIdentity
接口。如何确定哪些请求应更改标识,哪些不应更改标识,可以基于在所有窗口/选项卡中模拟的会话变量(我倾向于尽可能避免使用这些变量),也可以基于查询字符串或表单字段,以使特定的选项卡/窗口作为其他用户运行。设置
HttpContext.Current.User
在请求持续时间内是临时的,并且不会更改其
表单身份验证
cookie。

Hi Eduardo感谢您的回答,我会坚持使用第一个选项,但唯一的问题是,用户需要根据浏览器的选项触发该操作,用户往往是懒惰的,或者他们不知道该怎么做。。。