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();

    } 

如果有人能帮我完成这件事,我将不胜感激

谢谢!

MVC自定义数据库中的授权属性

我认为创建自定义AuthorizeAttribute不是一个好主意。使用标准AuthorizeAttribute是一种很好的做法。

有自己的Role表是一种常见的情况。最好覆盖如何设置主体标识的角色以及如何使用AuthorizeAttribute的roles属性。当用户登录时,将角色设置为声明一次;这将比在每次请求时在自定义Authorize属性中从数据库中检索角色要好。设置您的索赔CalimTypes.Role,然后用保护您的控制器/操作

[Authorize(Roles = "admin")]