【问题标题】:Custom authorization with capabilities table in MVC 5使用 MVC 5 中的功能表自定义授权
【发布时间】:2019-03-06 12:26:12
【问题描述】:

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

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

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

【问题讨论】:

  • 去自定义授权属性并在那里定义你的逻辑
  • 如果我知道该怎么做,我就不会在这里问了,你不觉得吗?
  • 你的问题就像你想知道它是否可能,所以我说它可能,只是重定向到我们如何做到这一点。

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


【解决方案1】:
[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")]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2012-10-04
    • 2020-01-03
    • 2012-11-25
    • 2015-05-14
    相关资源
    最近更新 更多