MVC 5中具有功能表的自定义授权

时间:2018-10-01 11:42:36

标签: c# asp.net-mvc authentication capability

我想知道是否可以通过使用C#中的MVC 5扩展现有身份验证来创建自定义身份验证-授权。 基本上,我想要的是能够通过暗示与角色通常相同的功能来允许访问方法或整个控制器:

public class User : Controller
{
    // POST: Users/Create
    [Authorize(Capabilities= "CreateUsers")]
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(FormCollection form)
    {
    }
}

我不想使用角色([Authorize(Roles = "Administrator")]),因为我的用户将具有功能。我的数据库中已经有针对Users,Capabilities和CapabilityUser的自定义表。

1 个答案:

答案 0 :(得分:0)

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
    public string Capabilities { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        // Check capablities here
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        // Decide what to do with unauthorized requests
    }
}

,然后将其用作

  

[MyAuthorize(Capability =“ CreateUsers”)]