문제

일반적으로 내 URL은 표준처럼 보입니다. www.example.com/controller/action

이제 다음과 같은 내 관리 섹션을 설정하고 싶습니다.

 www.example.com/admin/
 www.example.com/admin/user/list
 www.example.com/admin/content/add
etc.

그래서 형식은 다음과 같습니다. www.example.com/admin/controller/action

경로를 설정하는 방법을 알 수 없으므로 위의 것 같습니다.

도움이 되었습니까?

해결책

경로 정의의 시작 부분에서 하드 코딩 된 '관리자'섹션으로 새 경로를 매핑하면됩니다.

예를 들어 이것을 경로에 추가하십시오 RegisterRoutes 에서 Global.asax.cs 파일을 파일하고 기본 경로 위에 나타나는지 확인하십시오 (다른 경로를 추가하지 않은 것으로 가정) :

routes.MapRoute(
    "Default",                                              
    "admin/{controller}/{action}/{id}",                     
    new { controller = "Home", action = "Index", id = "" } 
);

참고 : 경로 정의 시작시 'admin'부분이 하드 코딩되었습니다.

참고 2 : 기본값을 넘어서 다른 경로를 추가 한 경우 경로가 올바르게 주문되어 있는지 확인해야합니다.

다음은 좋은 블로그 게시물에 대한 링크입니다. Scott Guthrie MVC 라우팅 관련 : URL 라우팅

다른 팁

켈시의 대답은 마크에 옳지 만 토론에 무언가를 추가하고 싶었습니다. 또 다른 옵션은 실제로 "관리자"경로가 전혀 없지만 제한된 URL에 실제로 액세스하기 위해 관리자 인증 세션이 필요합니다.

이것은 종종 "전통적인"편안한 응용 프로그램에서 일이 이루어집니다. 컨트롤러는 조작중인 리소스 유형을 나타내고 동작은 동사이며 ID는 해당 리소스의 특정 구성원의 고유 식별자입니다.

다시 말해,

/content/list (for normal users)
/admin/content/add (for admins)

너도 아마

/content/list (for everyone)
/content/add (for admin, but must be authenticated to work)

URL에 /admin /를 추가한다고해서 실제로 Benifits를 추가하지는 않지만 (아마도 /관리자에 대한 단일 규칙으로 단일 규칙으로 보안 논리를 작성할 수 있음을 제외하고), 트레이드 오프는 더 복잡한 경로와 표준 RESTFUL을 깨뜨리는 것입니다. 표준 관행을 깨는 것은 그 자체로 나쁘지는 않지만, 당신은 그것들이 이유의 표준이라고 생각해야하며, 당신이 그들을 깨뜨리는 데 특정 이점이 없다면, 그것들을 준수하는 것을 고려할 수 있습니다.

두 URL 스타일 모두에서 사용자를 인증해야합니다. 그렇지 않으면 누구나 사용할 수 있습니다.

ASP.NET MVC에서는 ActionFilters를 사용하여 사용자 수준을 기반으로 작업 (또는 전체 컨트롤러)에 대한 액세스를 제한 할 수 있습니다. 이러한 필터로 관리자 전용 작업을 꾸미면 인증 된 관리자 만 사용할 수 있습니다.

읽다 Scott Gu 's 블로그 항목 또는 Rob Connery의 게시물 자세한 내용은.

MVC 버전 2부터 그들은 당신이 이것을 제대로 수행 할 수있는 '영역'개념을 추가했습니다 :) 여기에 있습니다. MVC 2 미리보기에 대한 Scottgu의 게시물.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top