如何为MVC API创建我自己的Authorize属性
问题描述:
我想创建一个Web API MVC。 该API将授权TOKEN JWT,并且我想创建自己的Authorize属性,如CanRead,CanModify,CanWrite。 三个属性只是继承了属性类(没有AuthorizeAttribute),可以吗?如何为MVC API创建我自己的Authorize属性
我的应用程序复杂的角色和权限,所以我想定制所有关于授权和身份验证。 我想管理权限动态
那么我该怎么做呢?
我将访问数据库的属性(或者的CanRead CanModify)检查许可
答
创建自定义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方法中,确定根据设定用户是否具有正确的权限。