Я смог найти несколько примеров проверки подлинности на основе ролей, но это не проблема проверки подлинности. У меня три пользовательских типа, одна из которых я хочу иметь другую начальную страницу по умолчанию. Route-config инициализируется до получения информации о пользователе.Просмотр по умолчанию по умолчанию на основе
В скорлупе ореха: Если роль А или Роль запуска B ниже
Controller: Home
Action: Index
еще:
Controller: Other
Action: OtherIndex
Где и как это должно быть реализовано?
EDIT
Это должно происходить только в первый раз, сайт, доступ, другие пользователи могут перейти на главную/Index, просто не по умолчанию.
EDIT
Используя Suggestion Брэда я создал атрибут перенаправлять с его переназначения логики, и применил его к указателю. Затем я создал другое действие для страницы. Таким образом, если мне необходимо разрешить доступ к HomeIndex я могу определенно назначить его с Главным/HomeIndex, и все, что использует маршрутизацию по умолчанию может ударить дом/Index
[RedirectUserFilter]
public ActionResult Index()
{
return HomeIndex();
}
Для тех, кто нуждается в ней - вот атрибуте
public class RedirectUserFilterAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
if (!HttpContext.Current.User.IsInRole("Role A")
&& !HttpContext.Current.User.IsInRole("Role B"))
{
actionContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "Controller", "OtherController" },
{ "Action", "OtherAction" } });
}
}
}
Я не всегда нужен перенаправить, только в первый раз, сайт доступен – Seth
я бы сказал, «ActionFilter» или «AuthorizationFilter» будет лучшим способом, чтобы вы могли применять свое правило по всем запросам и не добавлять код к каждому методу действий. – asymptoticFault
@Seth: вы можете отслеживать запрос, используя сеанс или флаг профиля; ваш звонок. –