2010-07-21 2 views
0

AJAX가 활성화 된 콘텐츠가있는 페이지에서 사용자 로그인 토큰이 만료 (예 : 로그 아웃)되면 페이지에서 AJAX 링크를 선택하면 성공적으로 완료 될 것으로 보입니다. 그러나 이것은 그렇지 않습니다. 페이지로 리턴 된 컨텐츠는 로그인 재 지정입니다. 사용자가 로그 아웃 한 경우 AJAX 호출을 로그인 페이지로 리디렉션 할 수있는 방법이 있습니까? 내가 볼 수있는 가장 확실한 방법은 AJAX 호출자에게 오류를 전달하는 컨트롤러에 코드를 추가하는 것입니다.하지만 이는 폼 인증이기 때문에 사용자가 컨트롤러를 호출하기 전에 인증이 이루어지기 때문에 사용자 상태를 처리하게됩니다.로그인 토큰이 만료되었을 때 ASP.NET MVC 2 AJAX 호출

이 문제를 해결하는 방법에 대한 의견이 있으십니까? 미리 감사드립니다!

+0

입니까? – ryudice

+0

Jquery 및 일부는 Microsoft HTML 아약스 도우미를 사용하여 – JDBlueAudiS4

답변

0

당신은 당신이 컨트롤러 또는 perticular 행동에 [권한 부여] 속성을 사용하여 동일한처럼이 속성을 사용할 수 있습니다이

public class CustomAuthorize : AuthorizeAttribute 
{ 
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     //you can change to any controller or html page. 
     //filterContext.Result = new RedirectResult("/Account/Login"); 
     if (filterContext.HttpContext.Request.IsAjaxRequest()) 
     { 
      string destinationUrl = UrlHelper.GenerateContentUrl(FormsAuthentication.LoginUrl, filterContext.HttpContext); 
      filterContext.Result = new JavaScriptResult() 
      { 
       Script = "window.location = '" + destinationUrl + "';" 
      }; 
     } 
     else 
     { 
      base.HandleUnauthorizedRequest(filterContext); 
     } 
    } 
} 

같은 속성 [권한 부여]를 사용자 정의 할 수 있습니다. 어떤 라이브러리는 아약스 호출을하는 데 사용하는, 그것은 jQuery를

[CustomAuthorize] 
public class UserController : Controller 
{ 
    // your actions here 
} 

또는

public class UserController : Controller 
{ 
    [CustomAuthorize] 
    Public ActionResult Indes() 
    { 
     // your code here 
    } 
}