我在我的数据库中创建了自己的自定义角色表,我还想创建一个自定义授权属性。
这是我到目前为止所做的,但我不确定如何继续:
private List<RoleModel> Roles;
private IRoleRepository repo;
private ICustomerRepository cust;
public bool CheckRoles(string UserId)
{
try
{
Roles = repo.GetAll().ToList();
CustomerModel Customer = cust.Get(UserId);
int CustomerRole = Customer.RoleId;
RoleModel role = Roles.First(x => x.id == CustomerRole);
}
catch(Exception e)
{
return false;
}
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
string UserId = filterContext.HttpContext.User.Identity.GetUserId();
}
如果有人能帮我完成这件事我会非常感激。
谢谢!
答案 0 :(得分:1)
我认为创建自定义AuthorizeAttribute并不是一个好主意。使用标准AuthorizeAttribute是一个好习惯。
拥有自己的Role表是一种常见情况。最好覆盖如何设置主体身份的角色以及使用AuthorizeAttribute的Roles属性。在用户登录时将角色设置为声明;它会比在每个请求的自定义Authorize属性中从数据库中检索角色更好。 设置您的声明CalimTypes.Role,然后使用以下命令保护您的控制器/操作:
[Authorize(Roles = "admin")]