2013-10-10 5 views
0

MVC4 응용 프로그램의 역할에 따라 사용자를 라우팅하는 가장 좋은 방법을 찾고 있습니다. 어떻게 이것을 달성 할 수MVC4 응용 프로그램의 라우팅

는 기본적으로 내 응용 프로그램

1) 관리 2) 직원 3) 클라이언트

에서 사용자의 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