2014-10-14 2 views
0

는 인터넷 웹을 사용하여 인증되지 4.5.1인터넷 웹 4.5.1 라우팅 아무것도는

는 기본 문서에 대한 규칙 (예 : index.html을)를 구성하려고 오프 시작 :

routes.MapPageRoute(
    "Default", 
    "", 
    "~/Statics/anybody.html" 
); 

하면 디버그시를 로컬 나는

http://localhost:52065/Statics/anybody.html 
로 이동

http://localhost:52065 

(확장자없이) 원하는

길 아래로 스플래시 페이지로 이동하도록 요청 된 권한이 필요합니다 (예 : /Statics/anybody.html).

public class AuthenticatedConstraint : IRouteConstraint 
{ 
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, 
     RouteDirection routeDirection) 
    { 
     return httpContext.Request.IsAuthenticated; 
    } 
} 

그런 다음 다음을 사용할 수

답변

1

나는이 게시 주저 해요,하지만, 이것은 당신이 그것을 할 수있는 방법입니다 경로 :

routes.MapRoute(name: "Default", 
    url: "{*url}", 
    defaults: "~/Statics/anybody.html", constraints: new AuthenticatedConstraint()); 
routes.MapRoute(name: "DefaultNotAuthenticated", 
    url: "{*url}", 
    defaults: "~/Statics/notauth.html"); 

첫 번째 것은 인증 된 요청과 일치하고이를 anybody.html 문서로 반환합니다. 두 번째는 인증되지 않은 모든 라우트와 일치하고 notauth.html 문서에 놓습니다. 원하는 방식으로 URL을 조정할 수 있습니다.

그러나 나는 이것을 게시하는 것을 주저했다. ASP.NET MVC 라우팅 엔진은 간단한 요청에 대해서는 작동해야하지만 ASP.NET MVC 라우팅 엔진은 매우 복잡합니다. 작은 것들, 와일드 카드, 순서가 처리되는 순서 등 여러 가지가 있습니다. "우연히" 이 경로를 자신의 코드에서 작동하지 않게하십시오.

즉, 경로는 절대 안전한 것은 아닙니다. 라우팅 엔진을 둘러 볼 수있는 몇 가지 방법이 있습니다. 따라서 이것은 "보안"솔루션 자체가 아닙니다. 컨트롤러, 필터 또는 개별 페이지에서 필요로하는 모든 요청에 ​​대해 인증 확인을 계속 수행 할 것입니다. 이 기능은 "추가"보안 수단으로 작동하여 때로는 도착하기 전에 상황을 파악하지만 무언가가 균열을 빠져 나가면 페이지가 보안을 처리합니다.

+1

@Brain Deragon ** RouteCollection ** ** System.Web.Routing ** 네임 스페이스에서 사용 중이며 ** MapRoute ** 메소드에만지도 ** MapPageRoute **이 있습니다. MapPageRoute의 외형은 비슷하지만 올바른 클래스를 사용하고 있는지 궁금합니다. –

+1

@Brain Deragon, ** PageBuildProvider **를 Web.config에 추가하고 구성이 작동했습니다. 감사 –

0

봅니다 RouteConfig.cs에서이 줄을 추가하는 것은

public static void RegisterRoutes(RouteCollection routes) 
{ 
     routes.IgnoreRoute(""); 
} 
+0

불행히도 같은 행동이 도움이되지 않습니다. –

0

접근 1 :
당신이 사용자가 액세스 권한이없는 경우 지정된 페이지로 리디렉션됩니다의 Web.config에서 요소의 URL을 변경할 수 있습니다 폼 인증을 사용하는 경우.

 <forms loginUrl="~/Account/Login" defaultUrl="~/Account/Login" slidingExpiration="false" /> 



접근법 2 : 사용자가 다음 인증되지 않은 경우
는, 액션 필터를 사용할 수는 현재 요청을 할 수 밖에 지정된 페이지로 리디렉션합니다.