我在我的asp.net核心应用程序中添加了一个后备策略,因为我希望需要一个特定的角色作为后盾,而不是简单的授权。
但是,现在具有AllowAnonymous属性的页面正在使用我的回退策略,这似乎与文档直接矛盾。Microsoft说,退步策略适用于没有任何授权或AllowAnonymous属性的页面。
例如,使用
[AllowAnonymous]或[Authorize(PolicyName="MyPolicy")]的Razor、控制器或操作方法使用应用的身份验证属性,而不是回退身份验证策略。
https://learn.microsoft.com/en-us/aspnet/core/security/authorization/secure-data?view=aspnetcore-6.0
我想知道我在Startup中的配置是否错误,但是搜索时我没有发现与我的问题类似的东西。
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDbContext")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<MyDbContext>();
services.AddScoped<MySharedService>();
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
services.AddAuthorization(options =>
{
options.AddPolicy("IsSystemAdmin", policy => policy.RequireRole("SystemAdmin"));
options.FallbackPolicy = options.GetPolicy("IsSystemAdmin");
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}发布于 2021-12-06 22:58:03
因为我为隐私策略添加了一个“静态”页面,所以我无意中从PrivacyPolicy.cshtml中删除了行PrivacyPolicy.cshtml。
因此,PrivacyPolicy.cshtml.cs的页面模型被完全跳过,没有应用任何Authorize或AllowAnonymous属性。
我真不敢相信我浪费了这么多时间..。希望这能对未来的人有所帮助。
https://stackoverflow.com/questions/70251490
复制相似问题