.Net Core 3 Identity - 角色中的用户不工作
.Net Core 3 Identity - User in Role not working
任何人都可以提出建议,因为我正在努力使用具有 ASP 身份和 SQL 的新 .Net Core 3.0 应用程序,它的行为就好像用户不是角色的成员一样几时。我看过但看不到任何类似的帖子 - 我最初关注的是这里的文档:https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles?view=aspnetcore-3.1
我已经创建了角色并向角色添加了一个用户:
我已确保 .addroles 已添加到 ConfigureServices 中,并且我还尝试将此作为策略应用到 startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("ConnectionString")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
services.AddTransient<IEmailSender, EmailSender>();
services.Configure<AuthMessageSenderOptions>(Configuration);
services.ConfigureApplicationCookie(o => {
o.ExpireTimeSpan = TimeSpan.FromDays(2);
o.SlidingExpiration = true;
});
services.Configure<DataProtectionTokenProviderOptions>(o =>
o.TokenLifespan = TimeSpan.FromHours(3));
services.AddRazorPages();
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministratorRole",
policy => policy.RequireRole("System Administrators"));
});
}
在配置中我也参考了:
app.UseAuthorization();
如果我进一步查看,我可以看到该帐户确实在注册它是该角色的成员:
调试图片:
并通过在控制器中进行以下两次尝试:
[Authorize(Policy = "RequireAdministratorRole")]
public IActionResult Privacy()
{
return View();
}
[Authorize (Roles = "System Administrators")]
public IActionResult Privacy()
{
return View();
}
我一直收到访问被拒绝的视图:
拒绝观看:
我不知道为什么这行不通,请问有人能给我建议吗?
您的角色 'System Administrators' 中有一个 space。
角色不能有 space,请尝试 'SystemAdministrator'。
任何人都可以提出建议,因为我正在努力使用具有 ASP 身份和 SQL 的新 .Net Core 3.0 应用程序,它的行为就好像用户不是角色的成员一样几时。我看过但看不到任何类似的帖子 - 我最初关注的是这里的文档:https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles?view=aspnetcore-3.1
我已经创建了角色并向角色添加了一个用户:
我已确保 .addroles 已添加到 ConfigureServices 中,并且我还尝试将此作为策略应用到 startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("ConnectionString")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
services.AddTransient<IEmailSender, EmailSender>();
services.Configure<AuthMessageSenderOptions>(Configuration);
services.ConfigureApplicationCookie(o => {
o.ExpireTimeSpan = TimeSpan.FromDays(2);
o.SlidingExpiration = true;
});
services.Configure<DataProtectionTokenProviderOptions>(o =>
o.TokenLifespan = TimeSpan.FromHours(3));
services.AddRazorPages();
services.AddAuthorization(options =>
{
options.AddPolicy("RequireAdministratorRole",
policy => policy.RequireRole("System Administrators"));
});
}
在配置中我也参考了:
app.UseAuthorization();
如果我进一步查看,我可以看到该帐户确实在注册它是该角色的成员:
调试图片:
并通过在控制器中进行以下两次尝试:
[Authorize(Policy = "RequireAdministratorRole")]
public IActionResult Privacy()
{
return View();
}
[Authorize (Roles = "System Administrators")]
public IActionResult Privacy()
{
return View();
}
我一直收到访问被拒绝的视图:
拒绝观看:
我不知道为什么这行不通,请问有人能给我建议吗?
您的角色 'System Administrators' 中有一个 space。
角色不能有 space,请尝试 'SystemAdministrator'。