首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ASP.NET核心的授权回退策略中排除静态文件

如何从ASP.NET核心的授权回退策略中排除静态文件
EN

Stack Overflow用户
提问于 2021-09-19 21:19:52
回答 1查看 251关注 0票数 0

我目前正在开发一个应用程序,我已经在其中设置了授权回退策略,以避免必须在每个控制器上单独设置策略。问题是,你现在必须登录才能访问"wwwroot“(我的前端)下的静态文件,这显然是错误的,因为你需要前端能够登录。

有没有一种方法可以使用回退策略,但从它排除静态文件(例如,以某种方式添加AllowAnonymous到它)?或者我走错了路,应该以不同的方式解决这个问题?

编辑:直接访问静态文件(https://localhost:5001/index.html)是可行的,但是当我调用根url (https://localhost:5001)和MapFallbackToFile("index.html")时,我得到了一个401错误。如果我注释掉回退策略,一切都会正常工作。

这是我目前的Startup.cs (我正在试用.NET 6)

授权服务:

代码语言:javascript
复制
builder.Services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .RequireRole(Roles.User)
        .Build();
});

中间件:

代码语言:javascript
复制
var app = builder.Build();

// Configure the HTTP request pipeline.

if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseSwagger();
    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web v1"));
}
else
{
    app.UseHsts();
}

app.UseHealthChecks("/health");

app.UseHangfireDashboard();

app.UseHttpsRedirection();

app.UseStaticFiles();

app.UseRouting();

app.UseAuthentication();

app.UseAuthorization();

app.UseMiddleware<UserMiddleware>();

app.UseResponseCompression();

app.MapControllers();

app.MapFallbackToFile("index.html");

app.Run();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 16:14:00

要让身份验证只命中razor页面和控制器,而不访问其他文件,应该做到这一点:

代码语言:javascript
复制
services.AddRazorPages().AddMvcOptions(options => 
                options.Filters.Add(new AuthorizeFilter("MyCustomPolicy"))
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69247155

复制
相关文章

相似问题

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