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