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?

ASP.NET Core Identity 系列之五

如何使用 ASP.Net Core Identity 从登录用户中检索 Google 个人资料图片?

ASP.NET Core Identity - 扩展密码哈希