powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
29 сообщений из 29, показаны все 2 страниц
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962087
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартный шаблон ASP.NET MVC приложения. Добавляем роли Админ и Клиент, соответствующих юзеров. Добавляем контроллер Администрирование, делаем его Authorize(Roles = "Admin"), добавляем вью, добавляем пункт меню в мастерпейдж.
Как наиболее правильно сделать чтобы юзеру Клиент пункт меню Администрирование вообще не был виден?
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962352
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zvb73,

Как то так
Код: html
1.
2.
3.
4.
5.
6.
7.
<ul class="menu">
  <li><a href="/home"></a></li>
  <li><a href="/about"></a></li>
  @if(Model.IsAdmin) {
  <li><a href="/admin"></a></li>
  }
</ul>
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962419
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я обычно через расширение
public static MvcHtmlString If(this MvcHtmlString value, bool evaluation)
{
return evaluation ? value : MvcHtmlString.Empty;
}
а потом вызов
@Html.ActionLink("DoSome", "Action", "Controller").If(User.IsInRole("role"))
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962572
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zvb73Стандартный шаблон ASP.NET MVC приложения. Добавляем роли Админ и Клиент, соответствующих юзеров. Добавляем контроллер Администрирование, делаем его Authorize(Roles = "Admin"), добавляем вью, добавляем пункт меню в мастерпейдж.
Как наиболее правильно сделать чтобы юзеру Клиент пункт меню Администрирование вообще не был виден?

А зачем этот пункт("Администрирование ") вообще помещать в основное меню
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962653
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DezaА зачем этот пункт("Администрирование ") вообще помещать в основное меню

Это я для примера упростил, на самом деле будет много типов юзеров, у которых есть непересекающиеся задачи
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962671
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парамонzvb73,

Как то так
Код: html
1.
2.
3.
4.
5.
6.
7.
<ul class="menu">
  <li><a href="/home"></a></li>
  <li><a href="/about"></a></li>
  @if(Model.IsAdmin) {
  <li><a href="/admin"></a></li>
  }
</ul>



Меню в мастерпейдже Site.Master. Как из него до модели дотянуться?
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962729
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zvb73Меню в мастерпейдже Site.Master. Как из него до модели дотянуться?
Тут разные варианты:
1. Делать модель для мастерпейджа (MasterViewModel)
2. @Html.Action("Menu")
3. ViewBag, ViewData и общий контроллер (BaseController)
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962803
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор топика используеш мембершипы тогда в помощь тебе User.IsInRole? или самописная авторизация через IIdentity и IPrincipal снова в помощь User.IsInRole со своей реализаций. ну если что то другое, то через выше указаные телодвижения
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962816
zvb73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, пока что мембершип. Попробую и твой вариант, спасибо
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962826
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zvb73DezaА зачем этот пункт("Администрирование ") вообще помещать в основное меню

Это я для примера упростил, на самом деле будет много типов юзеров, у которых есть непересекающиеся задачи
Формируй меню в контролере
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37962830
Deza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zvb73DezaА зачем этот пункт("Администрирование ") вообще помещать в основное меню

Это я для примера упростил, на самом деле будет много типов юзеров, у которых есть непересекающиеся задачи
формируй меню в контролере, зачем дополнительную логику кидать на вью, она предназначена для визуализации, а не для логики
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #37963436
Фотография a_titeev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да. заводишь контроллер MenuController с PartialView, в котором и будет юзаться нужная модель. а в мастер-паге выводим просто через @Html.Action(... понаделаешь логики во вьюхе иначе, потом бардак будет...
а так в контроллере каким-то удобным образом подготовишь модель меню, списком пунктов каким-то с привязкой к экшенам и контроллерам, например, и вуаля...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38994994
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый,

Предстоит решить туже саму задачу что у товарища создавшего топик.

Делал пробный заход пол года назад и у меня был следующи результат. Меню About мог видеть только Агент когда в контролере было указано вот это.

<Authorize(Roles:="Agent")>
Function About() As ActionResult
Return View()
End Function

Пробное приложение было утеряно.

Сейчас пробую повторить тоже самое но уже ни чего не получается. Меню видят все. Когда нажимает пользователь который как Админ просит ввести Логин и Пароль.

У меня такое ощущение что я что-то изменил в IIS.

У кого нибудь есть идеи как у меня получилось скрывать меню для все кто не Агент указав в контроле <Authorize(Roles:="Agent")> ?


PS. У меня сейчас такое ощущение как-будто я мне это причудилось.
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38995219
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIS тут не причем, не он управляет ролями.
читать о IIdentity\IPrincipal и как работает Authorize.
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38995399
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Взаимосвязь между IIdentity\IPrincipal и скрытием меню понимаю. Сейчас не понимаю как реализовать.

Как писал выше пол года назад делал тестовый проект где все работало... и который не могу просто отыскать на TFS.

хм ... неужели это делал через Области...
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38995458
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1
С Областями получилось, но это реально что-то не то что ожидал ... должно как то быть проще чтоли

2
В интернетах предлагают использовать условие во вьюхах вот такое (PS которое тоже кажется маразмом)

<li>@Html.ActionLink("Home", "Index", "Home")</li>
@If User.IsInRole("Admin") Then
@<li>@Html.ActionLink("About", "About", "Home")</li>
End If
@If User.IsInRole("Agent") Then
@<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
End If

PS. Если такое использовать теряется всякий смысл от указания вот этого <Authorize(Roles:="Agent")> в контроле

3
Ну точно помню что пол года назад когда экспеременировал с ролями указывал только вот это <Authorize(Roles:="Agent")> в контроле и не более ... для того чтобы спрятать элемент меню



Плизз помогите понять в как такое сделать... это вообще возможно или я был в параллельной вселенной? )))))
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38995581
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем GС Областями получилось, но это реально что-то не то что ожидал ... должно как то быть проще чтоли

как области влияют на роли у тебя?

Артем GВ интернетах предлагают использовать условие во вьюхах вот такое (PS которое тоже кажется маразмом)
...
PS. Если такое использовать теряется всякий смысл от указания вот этого <Authorize(Roles:="Agent")> в контроле

да вполне нормально, можешь сделать хелпер/вьюшку на построение роли в зависимости от роли. а указание в контролере чтоб по прямому урл не зашли

Артем GНу точно помню что пол года назад когда экспеременировал с ролями указывал только вот это <Authorize(Roles:="Agent")> в контроле и не более ... для того чтобы спрятать элемент меню

из коробки асп мвц такого нет
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38995641
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это не слишком накладно - постоянно проверять роль пользователя?

И как сделать, чтобы изменение ролей вступало в силу не при перелогине, а сразу?
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38995741
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueА это не слишком накладно - постоянно проверять роль пользователя?

а что накладно пройтись по коллекции? если профилировщик скажет что это узкое место я буду думать что делать но раньше времени это экономия спичек

MonochromatiqueИ как сделать, чтобы изменение ролей вступало в силу не при перелогине, а сразу?
насколько я помню роли грузятся в контект запроса, та что сразу, вот сменить пароль юзера принудительно из админской учетки вот эт гемор без предварительного изменения как хранится кука авторизации в асп нет
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996034
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot handmadeFromRu]Артем GС Областями получилось, но это реально что-то не то что ожидал ... должно как то быть проще чтоли

как области влияют на роли у тебя?


вот тут пример от товарища

http://andrey.moveax.ru/post/mvc3-in-depth-basics-08-areas

как я понимаю если ролей дофига под каждую роль условно нужно делать область ))


Вобщем муторно и не гибко как то (( но пример рабочий.


PS. приду домой пошерю одну из идей (
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996055
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем G,
эм а где в его примере хоть что то про роли?)
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996060
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем GВ интернетах предлагают использовать условие во вьюхах вот такое (PS которое тоже кажется маразмом)
...
PS. Если такое использовать теряется всякий смысл от указания вот этого <Authorize(Roles:="Agent")> в контроле

да вполне нормально, можешь сделать хелпер/вьюшку на построение роли в зависимости от роли. а указание в контролере чтоб по прямому урл не зашли



А еще вопросец. хелпер это ты имеешь ввиду расширение для html?
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996069
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем Gкак я понимаю если ролей дофига под каждую роль условно нужно делать область ))
Мда, можно себе представить количество областей для каждой роли. И что потом с ними делать? Вообще-то области предназначены для решения несколько других задач - логическая разбивка апликации. Я бы не стал создавать области для ролей.
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996081
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRu
MonochromatiqueИ как сделать, чтобы изменение ролей вступало в силу не при перелогине, а сразу?
насколько я помню роли грузятся в контект запроса, та что сразу, вот сменить пароль юзера принудительно из админской учетки вот эт гемор без предварительного изменения как хранится кука авторизации в асп нет

Я отнимаю у сотра роль, но он продолжает лазить по закрытым разделам. Только после перелогина - действия имеют эффект.
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996097
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueИ как сделать, чтобы изменение ролей вступало в силу не при перелогине, а сразу? CookieAuthenticationProvider.OnValidateIdentity Property
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996123
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monochromatique,

https://github.com/maartenba/MvcSiteMapProvider очень полезная штука
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996163
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Monochromatique,

https://github.com/maartenba/MvcSiteMapProvider очень полезная штука

+1
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996252
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Monochromatique,

https://github.com/maartenba/MvcSiteMapProvider очень полезная штука

Как-то сложно для меня.

Не столкнулся с проблемами, которые она должна решать, поэтому не понимаю, куда её воткнуть.
...
Рейтинг: 0 / 0
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
    #38996389
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueAndrey1306Monochromatique,

https://github.com/maartenba/MvcSiteMapProvider очень полезная штука

Как-то сложно для меня.

Не столкнулся с проблемами, которые она должна решать, поэтому не понимаю, куда её воткнуть.

Модуль для централизованной навигации, генерации менюшек, хлебных крошек, фильтрации отображаемых пунктов меню по уровню доступа, с кешированием, с внедрением зависимостей, полный фарш.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]