MVC自定义数据库中的授权属性
本文关键字:授权 属性 自定义 数据库 MVC | 更新日期: 2023-09-27 17:57:33
我在数据库中创建了自己的自定义角色表,并希望同时创建一个自定义授权属性。
以下是我目前所掌握的,但我真的不确定如何进行:
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();
}
如果有人能帮我完成这件事,我将不胜感激
谢谢!
我认为创建自定义AuthorizeAttribute不是一个好主意。使用标准AuthorizeAttribute是一种很好的做法。
有自己的Role表是一种常见的情况。最好覆盖如何设置主体标识的角色以及如何使用AuthorizeAttribute的roles属性。当用户登录时,将角色设置为声明一次;这将比在每次请求时在自定义Authorize属性中从数据库中检索角色要好。设置您的索赔CalimTypes.Role,然后用保护您的控制器/操作
[Authorize(Roles = "admin")]