大家好,如果我们可以说用户会话模拟
,我会帮助管理我在我的应用程序中实现了角色模式,为了保持简单,我可以说我有2个角色
当用户登录系统时,他们被重定向到他们的特定模块EX:如果用户是管理员,他们会重定向到管理部分,到目前为止,没有任何问题只是为了给你一些上下文。
系统管理员的一个功能是能够模仿普通用户帐户,以便他们可以像普通用户那样执行任何操作,我这样做的方式很简单我只是记录了系统管理员并重新进行身份验证作为用户,问题是当同一个管理员想要同时在多个帐户中时,按照该方法我用最新信息覆盖cookie会话,所以如果我有两个标签例如我决定去当我刷新选项卡时,系统管理员将获得的信息是最新的,因此我想到了尝试混合无Cookie会话以将所有信息都放入网址的可能性,理论上有多个asp.net会话。
所以问题是,如果可能,如果系统默认使用cookie存储,我可以让两个系统同时运行吗?我可以默认使用cookie系统并通过编程设置cookieless系统吗?
我只是不想在所有操作中手动传递用户ID并通过查询字符串自己保存该信息,因为在这个阶段实际上会破坏我的代码,我将不得不重构一个巨大的部分系统
任何评论都将受到欢迎!
答案 0 :(得分:0)
在同一浏览器中无法同时打开两个身份。
我有两种选择:
答案 1 :(得分:0)
这看起来很旧,但是如果有人想知道,您可以在应用程序生命周期的AuthenticateRequest
事件期间使用GenericIdentity
和{{3}替换用户的身份或者您自己的实现IPrincipal
和IIdentity
接口的类。您如何确定哪些请求应该更改身份以及哪些不应该基于会话变量(我倾向于尽可能避免这些)以模拟所有窗口/选项卡,或者可能是查询字符串或表单字段以使其具体化标签/窗口与其他用户一样。设置HttpContext.Current.User
对于请求的持续时间是暂时的,并且不会更改其FormsAuthentication
Cookie。