我目前正在開發一個應用程式,我設定了一個授權回退策略,以避免在每個控制器上單獨設定一個策略。問題是,你現在必須登錄才能訪問 "wwwroot"(我的前端所在的位置)下的靜態檔案,這顯然是錯誤的,因為你需要前端能夠登錄。
是否有辦法使用后退策略,但將靜態檔案排除在外(例如,以某種方式將 AllowAnonymous 添加到其中)?還是說我走錯了路,應該以不同的方式解決這個問題?
編輯:直接訪問靜態檔案(https://localhost:5001/index.html)是可行的,但是當我呼叫根網址(https://localhost:5001)和MapFallbackToFile("index.html")時,我得到一個401錯誤。如果我注釋掉回退策略,一切都會正常。
這是我當前的Startup.cs(我正在嘗試使用.NET 6)
授權服務:
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.RequireRole(Roles.User)
.Build()。
});
中間件:
var app = builder.Build();
//配置HTTP請求管道。
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"/span>)。
app.Run()。
uj5u.com熱心網友回復:
為了讓auth只攻擊razor頁面和控制器,而不去管你的其他檔案,這樣做應該能達到目的:
services.AddRazorPages()。 AddMvcOptions(span class="hljs-params">options =>
options.Filters.Add(new AuthorizeFilter("MyCustomPolicy") )
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/322494.html
標籤:
上一篇:我試圖用ASP.Netcore向內部服務器上的一個API發出一個帖子請求。我收到了內部服務器的錯誤,盡管它在postman中是有效的。
