使用单独的类获取asp.net核心身份中的所有角色

斯科特·L

我一直试图从asp.net核心身份中获取所有角色的列表,这是在使用控制器之前完成的工作:

public AdminController(
        UserManager<ApplicationUser> userManager,
        ILogger<AccountController> logger,
        IEmailSender emailSender,
        RoleManager<IdentityRole> roleManager,
        SignInManager<ApplicationUser> signInManager)
    {
        _userManager = userManager;
        _logger = logger;
        _emailSender = emailSender;
        _roleManager = roleManager;
        _signInManager = signInManager;
    }

private void PuplateRolesList(RegisterViewModel model)
    {
        model.Roles = _roleManager.Roles?.ToList();
    }

我想做的是有一个可以重用的类,该类将返回所有角色的列表,而不使用控制器,我尝试这样做:

var roleStore = new RoleStore<AppRole, int, AppUserRole>(dbContext);
var roleMngr = new RoleManager<AppRole, int>(roleStore);

但是在一个类中,它显然没有构造角色管理器或dbContect,因此我自己尝试了一下,但它不起作用。关于如何在应用程序中创建类的任何想法都可以提供列表或角色,以至于我的控制器中没有全部内容?

谢谢

来自火星的阿瓜

创建一个类:

public class RoleUtility 
{
    private readonly RoleManager<IdentityRole> _roleManager;

    public RoleUtility(RoleManager<IdentityRole> roleManager)
    {
        _roleManager = roleManager;
    }

    public void PopulateRolesList(RegisterViewModel model)
    {
        model.Roles = _roleManager.Roles?.ToList();
    }
}

提取接口:

public interface IRoleUtility
{
    void PopulateRolesList(RegisterViewModel model);
}

RoleUtility类的声明变成:

public class RoleUtility: IRoleUtility

然后,在您的Startup课堂上:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddTransient<IRoleUtility, RoleUtility>();
}

您的控制器代码变为:

public AdminController(
        UserManager<ApplicationUser> userManager,
        ILogger<AccountController> logger,
        IEmailSender emailSender,
        IRoleUtility roleUtility,
        SignInManager<ApplicationUser> signInManager)
    {
        _userManager = userManager;
        _logger = logger;
        _emailSender = emailSender;
        _roleUtility = roleUtility;
        _signInManager = signInManager;
    }

private void PuplateRolesList(RegisterViewModel model)
    {
        _roleUtility.PopulateRolesList(model);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Asp.Net核心身份-没有角色的简单授权表

植入asp.net核心身份角色

ASP.NET核心身份角色,声明和用户

Asp.Net核心身份-使用角色和缓存授权属性?

带有 asp.net 核心身份的 Microsoft 身份平台

Asp.net核心身份使用AspNetUserClaims还是AspNetRoleClaims?

asp.net核心身份中的Multiple&SubDomain的Cookie

在ASP.net核心身份(UserManager和SignInManager)中,是否可以立即禁止用户?

Asp.net 核心身份:在 cshtml 中检查用户是否为 admin

IdentityServer4 Asp.Net核心身份

asp.net核心身份声明与属性(效率观点)

ASP.Net 核心身份验证提供程序

建模asp.net核心身份用户访问

asp.net核心身份cookie重播攻击

Asp.net 核心身份验证

.net核心身份,获取特定的注册错误条件

在没有asp的情况下,创建新的cookie之前,请检查声明(电子邮件)。使用ASP.NET核心社交登录的核心身份存储

客户端特定声明身份 server4 使用 asp.net 核心身份

asp.net核心身份验证中的signin-google如何链接到Google处理程序?

如何在视图中获取Asp.net核心身份用户

使用Identity Server 4和.net核心身份,无需请求中的授权标题即可对API进行授权

如何将dapper与ASP.Net核心身份一起使用?

使用serilog记录来自ASP.Net核心身份的事件

如何在多租户环境中使用Asp.Net核心身份

ASP.NET核心身份和身份服务器

CPU,内存使用情况,线程池使用情况-ASP NET核心身份未确认的邮件用户删除处理-在应用程序中还是在单独的应用程序中?

ASP核心身份,登录后如何获取userId?

为什么要求Asp.Net核心身份验证方案

通过电话号码在Asp.net核心身份中注册和登录