すぐにそれを理解しました:O
別の承認属性を作成しました。
public sealed class OverrideAuthorize : AuthorizeAttribute
{
}
これを LogonAuthorize のテストとして使用しました。
public override void OnAuthorization(AuthorizationContext filterContext)
{
bool skipAuthorization = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)
|| filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true)
|| filterContext.ActionDescriptor.IsDefined(typeof(OverrideAuthorize), true)
|| filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(OverrideAuthorize), true);
if (!skipAuthorization)
{
base.OnAuthorization(filterContext);
}
}
ここで、ホワイトリストに登録されたアクションに OverrideAuthorize (または AllowAnonymous) をタグ付けする必要があります。
[OverrideAuthorize(Roles = "Staff, Administrator")]
public ActionResult Index()
{
return View();
}
そのため、LogonAuthorize 属性はデフォルトですべてのコントローラーとアクションに適用され、役割「管理者」が必要ですが、AllowAnonymous または OverrideAuthorize が定義されていない場合にのみ承認されます。