如何将登录用户更改为另一个用户?

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 用户,那么这不是您要查找的内容。

【讨论】:

以上是关于如何将登录用户更改为另一个用户?的主要内容,如果未能解决你的问题,请参考以下文章

在用户登录后将按钮更改为可见

如何更改为另一个视图控制器(解释清楚)

在laravel 8中将用户的角色更改为另一个角色

当用户选择一个选项但随后将其更改为另一个选项时,React 崩溃而不显示错误

在 Laravel Passport 中将用户模型主键 ID 更改为另一个

如何通过主视图模型将 UserControl 内容更改为另一个 UserControl。如何在内容之间导航