ASP.net Core Identity 从管理员以另一个用户身份登录 [重复]
Posted
技术标签:
【中文标题】ASP.net Core Identity 从管理员以另一个用户身份登录 [重复]【英文标题】:ASP.net Core Identity Sign in as another user from Administrator [duplicate] 【发布时间】:2020-01-30 09:37:53 【问题描述】:我正在使用 ASP.net Core Identity,我已经在我的应用程序中注册了用户,并且我已经为其中一个用户分配了管理员角色。现在我希望该用户登录到其他任何人的帐户。作为站点的管理员,该用户应该能够登录到任何其他用户的帐户,并且可以进行任何他想要的更改。
我没有创建一个完全独立的用户管理屏幕,管理员可以在其中更新/删除用户,而是让管理员登录到任何现有用户的帐户并更改其信息。
我正在寻找一种方式,让我的具有管理员角色的用户可以登录到 ASP.net Core Identity 中的任何其他用户帐户
【问题讨论】:
【参考方案1】:您可以使用SignInManager
中的.SignInAsync()
方法在不知道密码的情况下以特定用户身份登录:
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(...)
...
...
【讨论】:
以上是关于ASP.net Core Identity 从管理员以另一个用户身份登录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
asp.net core系列 48 Identity 身份模型自定义
ASP.NET Core 3:无法从根提供程序解析范围服务“Microsoft.AspNetCore.Identity.UserManager`1[Alpha.Models.Identity.User
如何按照存储库模式在 Asp.Net Core 5.0 项目上实现 .Net Core Identity?