Я использую встроенные методы аутентификации ASP.NET MVC 5. Я хотел бы показывать и скрывать ссылки (в меню navbar) на основе роли, в которой пользователь находится.
Кто-нибудь получил это?
Где была бы отправная точка?
Я использую встроенные методы аутентификации ASP.NET MVC 5. Я хотел бы показывать и скрывать ссылки (в меню navbar) на основе роли, в которой пользователь находится.
Кто-нибудь получил это?
Где была бы отправная точка?
Просто обведите свои ссылки в:
@if (User.IsInRole("SomeRole"))
{
...
}
Вы можете использовать MvcSiteMap для этого. У него есть функция SecurityTrimming, которая использует атрибут [Authorize] в ваших методах действий, чтобы решить, отображать или нет элемент меню.
Я знаю, что он нахмурился, чтобы опубликовать ссылки в ответах, но я нашел это сообщение в блоге очень полезно.
В дополнение к видимости меню на основе ролей я добавил пользовательские атрибуты в MvcSiteMapNodes, чтобы определить видимость ссылок, которые были доступны для пользователей, но я не хотел показывать их в меню (например, редактировать страницы), а также добавил значки, которые позволяли мне использовать значки меню начальной загрузки, например:
<mvcSiteMapNode title="Till" controller="Home" action="Index" area="Till" iconClass="icon-home" visibility="true">
Я немного не по теме, но я просто хотел подчеркнуть, насколько гибкой MvcSiteMap.
Две вещи, которые я делаю. Либо
User.IsInRole(admin)
{link somewhere}
Или то, что я лично делаю, потому что я использую области, в которых у меня есть viewstart в области admin, который ссылается на admin shared viewmodel, а затем в общем доступе администратора, который ссылается на общедоступный вид.
В общем доступе администратора. Я создал раздел. В этом разделе я определяю дополнительные сведения о том, что увидит эта конкретная роль и добавит их в тег списка
Затем внутри общедоступного общего доступа я тогда использую (на телефоне не могу запомнить точное имя что-то вроде)
Html.IsSectionDefined
Мне лично нравится, что второй метод, использующий области и разделы, будет работать нормально, но со вторым я нахожу его более чистым, и вы можете быть гораздо более понятным и намного проще