我有一些頁面模型類,并且希望使這些模型控制的頁面可以匿名訪問或僅當用戶根據我的appsettings.json檔案中配置的布爾條件進行身份驗證時才可見。類似于以下內容(語法顯然不正確,但我希望它清楚地表明了我的意圖)。
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;
boolCondition ? [Authorize] : [AllowAnonymous]
public class IndexModel : PageModel
{
...
}
基于這里的這個答案,盡管它有點舊,但我實際上不確定我想要做的事情是否在 C# 中是可能的。坦率地說,這個答案有點超出我的想象,所以我不知道它對我的情況有多大的適用性。
想到的另一種可能的方法是創建我自己的自定義屬性類,并在那里有條件地回傳AuthorizeAttributeorAllowAnonymousAttribute基于布爾條件。但即便如此,我仍然不確定這是否可行,因為這似乎仍然取決于運行時條件。
任何幫助和建議表示贊賞。
uj5u.com熱心網友回復:
通過使用授權策略,您可以在啟動時(或在IConfigureOptions<AuthorizationOptions>服務內)更改這意味著什么。
您可以更改所有[Authorize]屬性的默認策略;
services.AddAuthorization(o => {
var builder = new AuthorizationPolicyBuilder();
if (<something>){
builder.RequireAssertion(c => true);
}else{
builder.RequireAuthenticatedUser();
}
o.DefaultPolicy = builder.Build();
});
或者推出一項僅適用于某些[Authorize(Policy="Name")].
services.AddAuthorization(o => {
o.AddPolicy("Name", builder => {
if (<something>){
builder.RequireAssertion(c => true);
}else{
builder.RequireAuthenticatedUser();
}
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/371323.html
上一篇:ASP.NETCoreApiAuthorizationDbContext不為資料模型創建表
下一篇:如何讓我的錯誤頁面看起來更友好?
