如何将登录用户更改为另一个用户?
Posted
技术标签:
【中文标题】如何将登录用户更改为另一个用户?【英文标题】:How do I change the logged in user to another? 【发布时间】:2010-04-02 15:46:26 【问题描述】:我想暂时将登录用户更改为另一个用户来做一些处理。
例如,假设我以“Joe”的身份登录。在我的方法中,我想让登录用户从“Joe”变为“SuperUser”,做一些处理,然后将登录用户改回“Joe”。有人可以帮忙吗?
【问题讨论】:
【参考方案1】:我认为您希望为此使用 ASP.NET 模拟。查看what it is 和how to use it。像这样的东西(来自第二个链接):
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
//Insert your code that runs under the security context of the authenticating user here.
impersonationContext.Undo();
编辑:对于 ASP.NET 成员资格,请参阅 this SO question 和 this answer。
【讨论】:
这是为 ASP.NET 用户(会员提供者)准备的吗?会员提供商是我需要与之合作的。 我已经用 ASP.NET 成员身份模拟的信息编辑了我的答案。【参考方案2】:虽然我不明白为什么用户会在现实世界的应用程序中成为超级用户,但我认为您可以看看 asp.net 模拟技术...
hth.
【讨论】:
但是 ASP.NET 模拟是在 Windows 操作系统级别。我想模拟 ASP.NET 成员级别。我正在扩展一个 Web 应用程序,以便为所有担任创建者角色的人提供对对象的访问级别。内置方法根据登录用户而不是登录角色检查权限,我必须模拟会员用户。即使我可以检查角色的权限,它在我的情况下也不起作用,因为创建者可以完全访问他们拥有的所有项目(即使他们没有一般修改权限)。所以我想给创作者的角色而不是创作者的用户赋予权利【参考方案3】:从这个问题的答案: Elevating process privilege programmatically?
您可以通过将 startInfo 对象的 Verb 属性设置为“runas”来指示应以提升的权限启动新进程,如下所示:
startInfo.Verb = "runas";
这将更改您的 Windows 用户。如果您想更改登录到您页面的 ASP.NET 用户,那么这不是您要查找的内容。
【讨论】:
以上是关于如何将登录用户更改为另一个用户?的主要内容,如果未能解决你的问题,请参考以下文章
当用户选择一个选项但随后将其更改为另一个选项时,React 崩溃而不显示错误