【问题标题】:Implementation MVC action OnAuthorization attr, which skip OnAuthorization attr in controller实现 MVC 动作 OnAuthorization attr,在控制器中跳过 OnAuthorization attr
【发布时间】:2015-08-10 07:46:46
【问题描述】:

我有权限控制对控制器的访问

public class UserLevelAccessibilityAttribute : FilterAttribute, IAuthorizationFilter
{ 
       var baseController = filterContext.Controller as Controllers.BaseController;

        var userContext = baseController.UserContext;
        if (false == userContext.HasUserLevels(_levels))
        {
            var postData = new Dictionary<string, object>();
            postData.Add("requiredLevels", string.Join(",", _levels));

            filterContext.Result = 
                new RedirectAndPostActionResult("/Error/Unauthorized", postData);
       }
}

在代码中看起来像

[UserLevelAccessibilityAttribute(EPermissionLevel.Pricing)]
public MyContr : Controller
{
    [SkipAuthorizationFromController]
    public ActionResult MyAction()
    {
    }
 }

我的问题是如何实现 SkipAuthorizationFromController 属性来跳过控制器的授权?还是应该更改 UserLevelAccessibilityAttribute 实现?

【问题讨论】:

    标签: c# .net security model-view-controller attributes


    【解决方案1】:

    在您的自定义属性中检查操作上是否存在任何 SkipAuthorizationFromController 属性。

    你可以使用下面来做到这一点

         actionContext
           .ActionDescriptor
           .GetCustomAttributes<SkipAuthorizationFromController>()
           .Any()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多