2016-07-17 1 views
0

Я создал свою собственную таблицу ролей в моей базе данных, и я также хотел создать вместе с ней специальный атрибут авторизации.MVC Custom Авторизовать атрибут из базы данных

Вот то, что я до сих пор, но я действительно не знаю, как поступить:

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

Я думаю, что создание пользовательского AuthorizeAttribute - не очень хорошая идея. Рекомендуется использовать стандартный атрибут AuthorizeAttribute.

Это обычный случай, когда у него есть своя таблица ролей. Лучше переопределить, как установить роли идентификатора вашего принципала и использовать свойство Роли AuthorizeAttribute. Задайте роль в качестве претензии один раз, когда пользователь регистрируется; это будет лучше, чем получить роль из базы данных в пользовательском атрибуте Authorize при каждом запросе. Установите требование CalimTypes.Role, а затем защитить ваши контроллеры/действия с:

[Authorize(Roles = "admin")] 
+0

Причина, по которой я создал свою собственную таблицу ролей, заключается в том, что вы должны покупать роль, поэтому каждая роль имеет столбец цены вместе с ним, а по умолчанию этого нет. Однако, как вы думаете, было бы хорошей практикой дать моей таблице ролей внешний ключ ASPRoleId и ссылку на него таким образом? – DevShadow

 Смежные вопросы

  • Нет связанных вопросов^_^