Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC - как скрыть пункты меню в зависимости от роли? / 25 сообщений из 29, страница 1 из 2
18.09.2012, 13:04
    #37962087
zvb73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
Стандартный шаблон ASP.NET MVC приложения. Добавляем роли Админ и Клиент, соответствующих юзеров. Добавляем контроллер Администрирование, делаем его Authorize(Roles = "Admin"), добавляем вью, добавляем пункт меню в мастерпейдж.
Как наиболее правильно сделать чтобы юзеру Клиент пункт меню Администрирование вообще не был виден?
...
Рейтинг: 0 / 0
18.09.2012, 14:27
    #37962352
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
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
18.09.2012, 14:58
    #37962419
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
я обычно через расширение
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
18.09.2012, 16:13
    #37962572
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
zvb73Стандартный шаблон ASP.NET MVC приложения. Добавляем роли Админ и Клиент, соответствующих юзеров. Добавляем контроллер Администрирование, делаем его Authorize(Roles = "Admin"), добавляем вью, добавляем пункт меню в мастерпейдж.
Как наиболее правильно сделать чтобы юзеру Клиент пункт меню Администрирование вообще не был виден?

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

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

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

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

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

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

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

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

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

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

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


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

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

хм ... неужели это делал через Области...
...
Рейтинг: 0 / 0
29.06.2015, 23:26
    #38995458
Артем G
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
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
30.06.2015, 09:38
    #38995581
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
Артем GС Областями получилось, но это реально что-то не то что ожидал ... должно как то быть проще чтоли

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

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

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

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

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

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

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

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

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


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

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

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


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


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

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



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

Я отнимаю у сотра роль, но он продолжает лазить по закрытым разделам. Только после перелогина - действия имеют эффект.
...
Рейтинг: 0 / 0
30.06.2015, 15:54
    #38996097
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC - как скрыть пункты меню в зависимости от роли?
MonochromatiqueИ как сделать, чтобы изменение ролей вступало в силу не при перелогине, а сразу? CookieAuthenticationProvider.OnValidateIdentity Property
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC - как скрыть пункты меню в зависимости от роли? / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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