2012-05-10 3 views
1

Хорошо. В моем приложении ASP.NET MVC я использую Windows Authentication. Я хочу использовать разные темы (layouts) для групп пользователей. Поэтому мой вопрос заключается в том, где/как мне сделать intercept user authentication, чтобы применить тематику для данной группы.Где перехватить аутентификацию пользователя

Должен ли я обрабатывать его внутри default route/action (и проверить, проверен ли запрос?).

Спасибо!

ответ

1

Мы используем аналогичную настройку, создавая несколько макетов, по одному для каждой роли.

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

В верхней части этого макета использовать этот

@{ 
    Layout = null; 
} 

И в вашем частичном виде _ViewStart.cshtml поставить что-то вроде этого:

@{ 
    if (User.IsInRole("Admin")) { 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
    else if(User.IsInRole("Accounting")) { 
     Layout = "~/Views/Shared/_AccountingLayout.cshtml"; 
    } 
    else if(User.IsInRole("HR")) { 
     Layout = "~/Views/Shared/_HRLayout.cshtml"; 
    } 
    else { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
} 

Я поставил роль администратора на вершине, потому что в Admi n обычно имеет доступ ко всем другим ролям, то есть в моем случае использование администратора также относится ко всем другим ролям. Таким образом, установка в верхней части будет немедленно отфильтровывать всех пользователей, которые не являются администраторами, и проверять их конкретную роль, и любой администратор быстро получает макет администратора.

Смежные вопросы