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 ответ
Обычно вы реализуете фильтр авторизации и применяете его к своему методу действия. Вот ссылка, как вы можете реализовать фильтры действий.