asp.net-core - ASP.net Core Identity 从管理员以另一个用户身份登录
问题描述
我正在使用 ASP.net Core Identity,我已经在我的应用程序中注册了用户,并且我已经为其中一个用户分配了管理员角色。现在我希望该用户登录到其他任何人的帐户。作为站点的管理员,该用户应该能够登录到任何其他用户的帐户,并且可以进行任何他想要的更改。
我没有创建一个完整的单独的用户管理屏幕,管理员可以在其中更新/删除用户,而是让管理员登录到任何现有用户的帐户并更改其信息。
我正在寻找一种方式,让我的具有管理员角色的用户可以登录到 ASP.net Core Identity 中的任何其他用户帐户
解决方案
您可以使用.SignInAsync()
from 方法SignInManager
以特定用户身份登录,而无需知道他们的密码:
public class ImpersonateUserHandler : IRequestHandler<ImpersonateUser, CommandResult>
{
private readonly SignInManager<AppUser> _signInManager;
public ImpersonateUserHandler(SignInManager<AppUser> signInManager)
{
_signInManager = signInManager;
}
public async Task<CommandResult> Handle(ImpersonateUser command,
CancellationToken cancellationToken)
{
try
{
cancellationToken.ThrowIfCancellationRequested();
// Look up the user you're going to impersonate
var user = await _signInManager.UserManager.FindByIdAsync(command.UserId);
...
// Login
var signInResult = await _signInManager.SignInAsync(user, false);
...
}
catch(...)
{
...
}
...
}
}
推荐阅读
- regex - 无法使用 open r+ PYTHON 在文件中写入文本
- php - OrderBy 不适用于学说 symfony2 中的别名
- wordpress - 如何重定向“您必须登录才能发表评论。” 链接到 wordpress 上的另一个链接
- html - 使用填充在悬停时为图像添加边框
- android - 如何从 ArrayAdapter 类的内部匿名类调用 startActivity?
- ios - 核心图像内核语言中的纹理(iChannel0,vec2)等价是什么?
- ios - 如何查看 iOS 应用程序文档目录的内容?
- css - Fluent Design 卡片提升效果
- html - 两个div在同一行
- asp.net-mvc - 使用书签和链接将 Html 表导出到 Word