Скрыть функциональность приложения в зависимости от типа пользователя, вошедшего в систему в MVC 5

Я создаю веб-приложение, в котором каждый пользователь может иметь разные роли, и каждая роль для системы иерархически хранится в базе данных. Когда пользователь входит в систему, извлекается самая высокая роль, и соответствующие функции отображаются в пользовательском интерфейсе, в то время как пользователь, просматривая приложение, также может переключиться на другую роль, используя доступную опцию переключения роли, когда он / она щелкает для другой роли, частичные представления (с другой функциональностью), и несколько кнопок должны быть скрыты от представления в зависимости от иерархии выбранной роли.

Насколько я понимаю, custom authorization можно использовать для проверки того, имеет ли пользователь доступ к определенной странице и перейти к запрошенной странице (если авторизован) или странице входа (анонимный пользователь), это будет контролировать уровень страницы. Как достичь контроль над элементами, т. кнопки, сетки и т. д. (см. сценарий ниже) на странице в зависимости от роли пользователя?

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

Является ли хорошей практикой смешивание MVC и FormsAuthentication вместе?


person Mahanthesh Kumbar    schedule 21.03.2017    source источник
comment
Используете ли вы систему идентификации ASP.NET? Тип аутентификации пользователя значения не имеет.   -  person Chris Pickford    schedule 21.03.2017


Ответы (1)


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

Например,

@{
   if (User.IsInRole("Admin"))
            {
                <a href="http://www.google.com">Click Here to go to google</a>
            }

 }

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

person elfico    schedule 21.03.2017