【问题标题】:Asp.net MVC Multiple User Sessions / User ImpersonationAsp.net MVC 多用户会话/用户模拟
【发布时间】:2013-01-23 16:24:00
【问题描述】:

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

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

  • 系统管理员
  • 普通用户

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

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

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

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

欢迎任何评论!

【问题讨论】:

    标签: c# asp.net asp.net-mvc forms-authentication


    【解决方案1】:

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

    我想到了两种选择:

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

    【讨论】:

    • 您好 Eduardo 感谢您的回答,我会坚持使用第一个选项,但唯一的问题是用户需要从浏览器的选项中触发该操作,用户往往很懒惰,或者他们不知道该怎么做...
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 2017-12-10
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 2011-05-14
      • 1970-01-01
      相关资源
      最近更新 更多