首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的授权回退策略会覆盖AllowAnonymous

为什么我的授权回退策略会覆盖AllowAnonymous
EN

Stack Overflow用户
提问于 2021-12-06 20:23:08
回答 1查看 887关注 0票数 1

我在我的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中的配置是否错误,但是搜索时我没有发现与我的问题类似的东西。

代码语言:javascript
复制
// 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();
    });
}
EN

回答 1

Stack Overflow用户

发布于 2021-12-06 22:58:03

因为我为隐私策略添加了一个“静态”页面,所以我无意中从PrivacyPolicy.cshtml中删除了行PrivacyPolicy.cshtml。

因此,PrivacyPolicy.cshtml.cs的页面模型被完全跳过,没有应用任何AuthorizeAllowAnonymous属性。

我真不敢相信我浪费了这么多时间..。希望这能对未来的人有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档