도메인 승인이있는 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.cshtml
는 Views\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
{
...
}
동안, 하나 개의 동일한 권한 부여 실패
리다이렉션 대상은 공유 된 뷰입니다. 그것은'Shared' 폴더에 있습니다. 그럼 내가 어떻게 방향을 바꿀 수 있니, 제발, 조언을 해줄 수 있니? – horgh
내가 작성한대로 컨트롤러와 액션을 만들면 액션에서 문제의 뷰를 반환 할 수 있습니다. 기술적으로 이것은 리디렉션이 아니지만 어쩌면 그렇게 할 필요는 없습니다. 원하는보기가 브라우저로 전송됩니다. 비슷한 컨트롤러와 액션이 있다면 HandleUnauthorizedRequest에서 사용할 수 있습니다. –
urlHelper.Action은 항상 컨트롤러와 해당 메서드에서 작동하며 뷰와 직접 연결하지 않습니다. –