MVC5 EF6 UserRights

Интересно, что является лучшей практикой для проверки фактически зарегистрированных прав пользователя для приложения MVC. Я хотел бы сделать это на представлениях и на контроллерах.

На самом деле я могу проверить, действительно ли зарегистрированный пользователь в этой роли:

User.IsInRole("roleName");

У меня есть таблица с правами. Каждое право содержит имя и представление права Enum. То, что я хочу сделать, это метод расширения для IPrincipal или IIdentity, чтобы я мог проверить права пользователя следующим образом:

Пример метода расширения:

    public static class MyPrincipal
    {
       public static string HasRight(this IPrincipal principal, EnumRight right)
       {
           // THIS would be place where I would check if a user have right with specific enum.
           return true/false;
       }
    }

а затем на представлении или контроллере я мог бы использовать это так:

if(User.HasRight(EnumRight.AddDocuments) )
{
    //DO SOMETHING
}
  1. Это хорошая практика или как сделать подобный механизм проще? Может быть, независимый статический класс не расширение?

  2. Как я могу получить фактический идентификатор пользователя в моем методе расширения, чтобы получить из базы данных любые данные, необходимые для проверки, есть ли у пользователя права?

1 ответ

Решение

Обычно вы реализуете фильтр авторизации и применяете его к своему методу действия. Вот ссылка, как вы можете реализовать фильтры действий.

Другие вопросы по тегам