最後に、私の質問の解決策を得ました。 これは、AuthorizeAttributeを継承してからOnAuthorizationをオーバーライドするattestという名前の新しい属性を追加することで行いました。 まず、特定のユーザが、trueまたはfalseを返す特定のコントローラの呼び出されたActionにアクセスする権限を持っているかどうかをチェックするクラスを作成しました。 次に、ユーザーの役割に特定の操作の権限がある場合、AttestAttributeでこれを呼び出し、通常の機能が実行されますが、そうでなければエラーページにリダイレクトできます。
public override void OnAuthorization(AuthorizationContext filterContext)
{
var parameters = filterContext.ActionDescriptor.GetParameters();
var values = parameters.Select(s => new
{
Name = s.ParameterName,
Value = filterContext.HttpContext.Request[s.ParameterName]
});
string ControlerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
AppUser requestingUser = new AppUser(Convert.ToInt32(filterContext.RequestContext.HttpContext.Session["ssnRolekey"]));
if (!requestingUser.HasPermission(oper, ControlerName))
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "action", "UnauthorizedUser" },
{ "controller", "Account" } });
}
}
public AttestAttribute(string permission)
{
this.oper = permission;
}