【问题标题】:Using asp.net roles in a blazor page在 Blazor 页面中使用 asp.net 角色
【发布时间】:2021-08-21 10:17:58
【问题描述】:

我想在 blazor 服务器端页面中使用 asp.net Usermanager 来获取用户的角色

为了实现这一点,我必须使用 UserManager,但如果我尝试使用 [Inject],当我在 startup.cs 中执行 services.Addxx 时会出现错误

在尝试激活“Microsoft.AspNetCore.Identity.UserManager'1[Data.ApplicationDbContext]”时,无法解析“Microsoft.AspNetCore.Identity.IUserStore'1[Data.ApplicationDbContext]”类型的服务。

否则,如果我尝试在构造函数中使用,我会收到此错误:

错误 CS7036 没有给出与“InvoiceListBase.InvoiceListBase(UserManager)”的所需形式参数“userManager”相对应的参数

[CascadingParameter] Task<AuthenticationState> AuthenticationStateTask { get; set; } 
private readonly UserManager<ApplicationDbContext> _userManager;
public IList<String> Roles { get; set; }

public InvoiceListBase(UserManager<ApplicationDbContext> userManager)
{
    _userManager = userManager;
}

protected override async Task OnInitializedAsync()
{
    var authstate = await AuthenticationStateTask;
    var user = await _userManager.GetUserAsync(authstate.User);
    Roles = await _userManager.GetRolesAsync(user);
}

谢谢

【问题讨论】:

    标签: asp.net-identity blazor blazor-server-side


    【解决方案1】:

    改变

    UserManager<ApplicationDbContext>
    

    UserManager<IdentityUser> 
    

    如果您使用ApplicationUser

    UserManager<ApplicationUser> 
    

    还要使用角色,你必须使用.AddRoles&lt;IdentityRole&gt;()

    services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
        .AddRoles<IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>();
    

    【讨论】:

      猜你喜欢
      • 2021-05-30
      • 1970-01-01
      • 2020-11-24
      • 2020-08-04
      • 1970-01-01
      • 2010-11-18
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多