2012-10-10 4 views
1

도메인 승인이있는 mvc 인트라넷 템플릿을 사용하는 동안 컨트롤러에 따라 권한 부여 실패시 특정 오류 페이지로 어떻게 리디렉션 할 수 있습니까? 난 아무데도 리디렉션 아니에요 기본적으로인증 실패시 어떻게 다른보기로 리디렉션 할 수 있습니까?

[AuthorizeWithRedirect(Users = @"user")] 
    public class MyController : Controller 
    { 
    ... 
    } 

:

그래서, 나는 컨트롤러 클래스가 있습니다. 다른 사용자의 페이지를 열면 빈 페이지 만 보입니다. 문제는 인증이 실패 할 경우 요청이 다른 컨트롤러의 다른 페이지로 리디렉션되도록하려는 것입니다. 즉, MyController에 대한 한 페이지, 다른 컨트롤러에 대한 다른 페이지 등이 있습니다.

AuthorizeAttribute에서 파생되고 HandleUnauthorizedRequest 메서드를 재정의 할 수 있습니다. 그러나 나는 그것이 작동되도록 할 수 없습니다

public class AuthorizeWithRedirect : AuthorizeAttribute 
{ 
    protected override void HandleUnauthorizedRequest(AuthorizationContext context) 
    { 
     UrlHelper urlHelper = new UrlHelper(context.RequestContext); 
     context.Result = new RedirectResult(urlHelper.Action("MyErrorPage")); 
    } 
} 

내가 지정한 URL이 발견되지 않는 것을 말하고, 오류가 발생, MyErrorPage.cshtmlViews\Shared 폴더에 않지만.

편집

[Authorize(Users = @"user")]//should be redirected to ErrorPage1 
    public class MyController1 : Controller 
    { 
    ... 
    } 

입니다

[Authorize(Users = @"user")]//should be redirected to ErrorPage2 
    public class MyController2 : Controller 
    { 
    ... 
    } 

동안, 하나 개의 동일한 권한 부여 실패

답변

3

AuthorizeWithRedirect가 정상적으로 보입니다. 그러나 MVC는 올바른 조치 방법이 없다고 불평하고 있습니다.

보기에는 문제가 없습니다. 컨트롤러와 액션 메소드가 있습니다. 이 같은

시도 뭔가 : 공공 액션 메소드의 리디렉션으로 현재 TestController와

context.Result = new RedirectResult(urlHelper.Action("Test", "Redirect")); 

.

+0

리다이렉션 대상은 공유 된 뷰입니다. 그것은'Shared' 폴더에 있습니다. 그럼 내가 어떻게 방향을 바꿀 수 있니, 제발, 조언을 해줄 수 있니? – horgh

+0

내가 작성한대로 컨트롤러와 액션을 만들면 액션에서 문제의 뷰를 반환 할 수 있습니다. 기술적으로 이것은 리디렉션이 아니지만 어쩌면 그렇게 할 필요는 없습니다. 원하는보기가 브라우저로 전송됩니다. 비슷한 컨트롤러와 액션이 있다면 HandleUnauthorizedRequest에서 사용할 수 있습니다. –

+0

urlHelper.Action은 항상 컨트롤러와 해당 메서드에서 작동하며 뷰와 직접 연결하지 않습니다. –

-1

를 사용하여 상단의 핸들 오류 데이터 주석에 다른 컨트롤러에 대한 다른 오류 페이지 로그인 방법

[HandleError] 
public ActionResult Login() 
{ 
    //your action method 
} 
+0

로그인이란 무엇입니까? 도메인 승인을 사용하고 있습니다 ... – horgh

+0

죄송 합니다만 그 자리 표시 자 이름입니다. 내 말은 HandleError 주석이 액션 메소드가 던질 수있는 예외를 잡아 내고 지정된/기본 오류 페이지로 사용자를 리디렉션하는 것입니다. – rexcfnghk

관련 문제