MVC自定义从数据库授权属性

时间:2016-07-17 20:48:42

标签: c# asp.net-mvc authorize-attribute

我在我的数据库中创建了自己的自定义角色表,我还想创建一个自定义授权属性。

这是我到目前为止所做的,但我不确定如何继续:

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



    } 

如果有人能帮我完成这件事我会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为创建自定义AuthorizeAttribute并不是一个好主意。使用标准AuthorizeAttribute是一个好习惯。

拥有自己的Role表是一种常见情况。最好覆盖如何设置主体身份的角色以及使用AuthorizeAttribute的Roles属性。在用户登录时将角色设置为声明;它会比在每个请求的自定义Authorize属性中从数据库中检索角色更好。 设置您的声明CalimTypes.Role,然后使用以下命令保护您的控制器/操作:

[Authorize(Roles = "admin")]