我覺得這個問題值得與代碼示例的答案...以@ tvanfosson的建議擴展AuthorizeAttribute
班,這是我想出的(批評不止是歡迎)。
AuthorizeFromConfiguration.cs:
public class AuthorizeFromConfiguration: AuthorizeAttribute
{
public new string Roles
{
get {
return base.Roles;
}
set {
var config = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("authorization.json")
.Build();
base.Roles = config[value];
}
}
}
authorization.json:
{
"Parts": {
"Create": "contoso.com\\MyWebApp_CreateNewPart",
"Edit": "contoso.com\\MyWebApp_EditPart"
}
}
示例用法:
[AuthorizeFromConfiguration(Roles = "Parts:Create")]
public class CreateModel : PageModel
{
//...
}
注意:在我的測試中,在對authorization.json
文件所做的任何更改生效之前,必須重新啓動網站,即使當我嘗試更改邏輯以便在get
訪問器而不是set
上讀取JSON文件時也是如此。
是的,經過更多的谷歌搜索,看起來像是唯一的出路。 – 2009-11-12 20:52:35