2013-10-10 3 views
0

Я ищу поиск лучшего способа маршрутизации пользователей в зависимости от их роли в приложении MVC4.Маршрутизация в приложении MVC4

В принципе у меня есть 3 типа пользователей в моем приложении

1) Администратор 2) Персонал 3) Клиент

Как я могу добиться этого?

admin/home (for each admin request it starts with admin/{controller}....) 
staff/home (for each staff request it starts with staff/{controller}....) 
client/home (for each client request it starts with client/{controller}....) 

Спасибо.

+0

Аналогичный вопрос http://stackoverflow.com/questions/8181284/mvc-role-based-routing – Jared

+0

Похоже, что я должен использовать другую область в своем приложении. Это не так? Если это так, я задаюсь вопросом, есть ли какой-либо другой способ явного определения маршрутов вместо использования областей. Но я не знаю, как это сделать, если это возможно. – user2866746

+0

Ну, в какой-то момент вам придется аутентифицировать пользователя. Таким образом, еще один вариант будет в вашем контроллере входа, чтобы затем перенаправить их на основе их ролей. – Jared

ответ

0

3) Существует атрибут, который вы размещаете перед своими действиями в своем контроллере, поэтому вы можете указать, какая роль может быть разрешена для этого конкретного действия. Вы также можете создавать свои собственные фильтры.

0

Хорошо, вот что я предлагаю, создаю новый проект и использую «интернет-шаблон». Из коробки они создали для вас страницу входа в систему, и это даст вам представление о том, как настроить ее в своем приложении.

Основываясь на настройке сверху, вам необходимо будет отредактировать AccountController и добавить что-то подобное в действие входа в систему.

if (User.IsInRole("Admin")) 
{ 
    return RedirectToAction("Home", "AdminController"); 
} 
if (User.IsInRole("Staff")) 
{ 
    return RedirectToAction("Home", "StaffController"); 
} 
if (User.IsInRole("Client")) 
{ 
    return RedirectToAction("Home", "ClientController"); 
} 

Не забудьте добавить атрибут [Authorize(Roles = "RoleName")] четырех контроллеров, или это не имеет значения, если они вошли в систему или нет.

Кроме того, взгляните на http://www.asp.net/mvc, у них есть много ресурсов для изучения asp.net mvc.

+0

ОК получил. Но, как я уже сказал, я хочу, чтобы URL-адрес запроса (admin/...). Итак, я должен сделать все действия в AdminController? Не могу ли я сделать больше контроллеров? Думаю, если я создам отдельный контроллер, тогда URL-адрес запроса не будет похож, как я хотел. – user2866746

+0

Путь маршрутизации работает из окна/{controller}/{action}, поэтому при перенаправлении на AdminController URL-адрес будет/Admin/Home. Я действительно рекомендую вам ознакомиться с информацией на веб-сайте asp.net, все это объясняется. – Jared

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