2011-03-27 5 views
2
내가 여기에 일부 작업

사용자 정의

public class IsSubscriptionActive : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //check if user logged in , if not return false 
     //get user object from request 
     if(UserObject.IsSubscriptionActive) 
      return true; 
     else 
      return false; 
    } 
} 

에게 문제를 액세스 가입이없는 사용자를 제한 할 속성을 부여 사용자 정의를 사용했다

이 일을하는 사용자를 리디렉션하는 것입니다 기반의 사용자 개체 속성 (asp.net의 MVC)를 리디렉션하는 속성 사용자가 로그인했는지 여부에 관계없이 로그인 페이지입니다.

따라서 기본 권한 부여 속성을 그대로 사용하고 싶지만 가입 상태를 확인하고 리디렉션 할 다른 속성이 필요합니다. 어떻게해야합니까?

답변

2

테스트하지만, 그것을 밖으로 시도하지 :

public class IsSubscribedAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (filterContext.HttpContext.User.Identity == null || 
       !filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      filterContext.Result = 
       new RedirectResult(System.Web.Security.FormsAuthentication.LoginUrl 
          + "?returnUrl=" + 
       filterContext.HttpContext.Server.UrlEncode 
          (filterContext.HttpContext.Request.RawUrl)); 
     } 
     if (isSubscribed)//check subscription here. 
     { 
      filterContext.HttpContext.Response.StatusCode = 401; 
      filterContext.Result = new HttpUnauthorizedResult(); 
     }//you can set the statuscode/result as you like? 
    } 
} 
+0

이 코드는 그대로는, 페이지를 로그인 리디렉션합니다. 어디서 맞춤 리디렉션 액션 또는 URL을 설정할 수 있습니까? – maX

+0

@maxee가 업데이트되었습니다. – gideon

+0

ActionFilterAttribute 클래스에 대한 나의 무지를 신경 쓰지 마십시오. if (! isSubscribed) // redirect와 같은 일을 할 수 있습니까? 그것이 내가 캠을 찾고있는 것이다 – maX

관련 문제