如何为MVC API创建自己的Authorize属性

时间:2017-05-30 10:16:32

标签: asp.net-mvc api authorize

我想创建一个Web API MVC。 这个API将授权TOKEN JWT,我想创建自己的Authorize属性,如CanRead,CanModify,CanWrite。 三个属性只是继承了Attribute类(没有AuthorizeAttribute),可以吗?

我的应用程序使角色和权限变得复杂,所以我想自定义所有关于授权和身份验证的内容。 我想管理权限动态

那我该怎么做呢?

我是否可以从属性(CanRead或CanModify)访问数据库以检查权限

1 个答案:

答案 0 :(得分:0)

改为创建自定义AuthorizeAttribute。以下是一个例子。

public class KeyAuthorizeAttribute : AuthorizeAttribute  
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        string key = httpContext.Request["X-Key"];
        return ApiValidatorService.IsValid(key);
    }
}

public static class ApiValidatorService
{
    public static bool IsValid(string key)
    {
        int keyvalue;

        if (int.TryParse(key, out keyvalue))
        {
            return keyvalue % 2137 == 7;
        }
        return false;
    }
}

采取from Jon Galloway's blog。我不知道你是如何授权的,但如果你创建了一个类:

public bool CanRead { get; set; }
public bool CanWrite { get; set; }
public bool CanModify { get; set; }

然后在AuthorizeCore方法中,根据设置确定用户是否拥有正确的权限。