0

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

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

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

4

1 回答 1

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(Capabilities="CreateUsers")]

于 2018-10-01T12:17:31.050 回答