我正在设置一个新的 Razor Pages 应用,我想添加基于角色的授权。网络上有很多教程如何使用 ASP.NET MVC 应用程序而不是 Razor 页面来完成。我尝试了很少的解决方案,但对我没有任何用处。目前我有一个问题如何为数据库添加角色并将这个角色添加到每个新注册用户。
这是我的Startup.cs样子:
public async Task ConfigureServices(IServiceCollection services)
{
var serviceProvider = services.BuildServiceProvider();
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(config =>
{
config.SignIn.RequireConfirmedEmail = true;
})
.AddRoles<IdentityRole>()
.AddDefaultUI(UIFramework.Bootstrap4)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddAuthorization(config =>
{
config.AddPolicy("RequireAdministratorRole",
policy => policy.RequireRole("Administrator"));
});
services.AddTransient<IEmailSender, EmailSender>();
services.Configure<AuthMessageSenderOptions>(Configuration);
services.AddRazorPages()
.AddNewtonsoftJson()
.AddRazorPagesOptions(options => {
options.Conventions.AuthorizePage("/Privacy", "Administrator");
});
await CreateRolesAsync(serviceProvider);
}
}
现在这段代码抛出了一个异常:
System.InvalidOperationException: '无法找到所需的服务。请通过在应用程序启动代码中对“ConfigureServices(...)”的调用中调用“IServiceCollection.AddAuthorizationPolicyEvaluator”来添加所有必需的服务。
添加AddAuthorizationPolicyEvaluator没有任何改变。
有小费吗?
弑天下
相关分类