2014-11-16 3 views
0

내 에 사용자 정의 권한을 부여했습니다. 나는이있다 : 사용자가 연결되어있는 경우Login.cshtml MVC 5 면도기로 리디렉션

[CustomAuthorize] 
ActionResult Planning() 

, 그는 특정 페이지에 도달 할 수 있습니다. 나는 이것을 위해 URL을 만들었다. 하지만 사용자가 연결되어 있지 않으면 로그인 페이지로 리디렉션하려고하지만 "~/Views/Account/Login.cshtml"이라는 URL 오류가 있습니다.

미리 감사드립니다.

편집 내 코드 :

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (System.Web.HttpContext.Current.User.Identity != null 
      && System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 
     { 
      if (System.Web.HttpContext.Current.User.IsInRole("student")) 
      { 
       var result = new ViewResult(); 
       result.ViewData.Model = "Home"; 
       result.ViewName = "~/Views/Roles/Student.cshtml"; 
       result.MasterName = "~/Views/Shared/_Layout.cshtml"; 
       filterContext.Result = result; 
      } 
     } 
     else 
     { 
      here the redirection to the Account/Login page 
     } 

    } 
} 
+1

'CustomAuthorize' 속성에 대한 코드를 표시하십시오 ... – HTX9

+0

내 코드가 현재 있습니다. – Memo

답변

0
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
     { 
      filterContext.Result = new RedirectResult("/");//Your path goes here 
      base.HandleUnauthorizedRequest(filterContext); 
     } 

시도를 사용할 필요가 on false를 반환합니다. 이것은 더 나은 접근 방법입니다. 시험 사용해보세요. 이 기본 핸들러는 권한 부여가 실패 할 때 작동합니다. 희망이 있습니다. 감사합니다.

+0

그것은 작동합니다! 친구 야 고마워 ! – Memo

0

당신이 핸들러를 칠 것이다 필터의 상황에 맞는 뭔가 OnAuthorize에서 참/거짓 반환이

filterContext.Result = new RedirectResult("/home/login"); 
+0

도와 주셔서 감사합니다. 그것은 작동합니다! – Memo