【问题标题】:Get permission from Authorize Attribute?从授权属性获得许可?
【发布时间】:2010-12-28 16:07:46
【问题描述】:

我已经实现了自己的Authorize 属性,我注意到当我使用[Authorize] 时它会查询以检查权限。

有什么方法可以获得该权限并在应用Authorize 属性的当前控制器中使用它,而无需重写和重新查询控制器中的代码?

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-membership roleprovider


    【解决方案1】:

    是的,你可以。如果您将 Authorize 属性实现为 ActionFilterAttribute,则可以使用 ViewData 集合来存储如下信息:

        public class RequireRegistrationActionFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;
            HttpResponseBase response = filterContext.HttpContext.Response;
    
            if (request != null && 
                response != null)
            {
                bool isAuthenticated = request.IsAuthenticated;
                filterContext.Controller.ViewData["IsAuthenticated"] = isAuthenticated;
    
                if (!isAuthenticated)
                {
                    string url = String.Format(
                       "/?ReturnUrl={0}", 
                       HttpUtility.UrlEncode(request.Url.ToString()));
                    response.Redirect(url);
                }
            }
        }
    }
    

    在带注释的控制器的 acrion 中,您可以通过以下方式访问该字段:

    bool isAuthenticated = (bool)(ViewData["IsAuthenticated"] ?? false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-26
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多