【发布时间】:2020-04-03 22:14:57
【问题描述】:
请任何人提供建议,因为我正在努力使用具有 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();
}
我不断收到拒绝访问的视图:
被拒绝的观点:
我不知道为什么这不起作用,请任何人提供建议?
【问题讨论】: