2013-05-21 2 views
2

나는 userName을 전달하고 .aspx 페이지의 webmethod에 Json Format의 Ajax ( )로 전달합니다. 이제 사용자를 인증하고 사용자를 동일한 페이지로 리디렉션하고 LoginView를 LogedIn State로 업데이트하려고합니다.WebMethod에 의한 인증 방법

어떻게 할 수 있습니까? 여기 내의 WebMethod의

[WebMethod] 
    // [ [System.Web.Script.Services.ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet=false)] 
    public static void login(object myData) 
    { 

     JavaScriptSerializer js = new JavaScriptSerializer(); 
     List<nameVal> myfrm = js.Deserialize<List<nameVal>>(myData.ToString()); 
     // MembershipUser u = Membership.GetUser(myfrm.SingleOrDefault(rs=>rs.name=="userName").value); 

     if ( Membership.ValidateUser(myfrm[0].value,myfrm[1].value)) 
     { 
      FormsAuthentication.Authenticate(myfrm[0].value, myfrm[1].value); 
      //FormsAuthentication.RedirectFromLoginPage(myfrm[0].value, false); 

      FormsAuthenticationTicket tkt; 
      string cookiestr; 
      HttpCookie ck; 
      tkt = new FormsAuthenticationTicket(1, myfrm[0].value, DateTime.Now, 
      DateTime.Now.AddMinutes(30), true, "my custom data"); 
      cookiestr = FormsAuthentication.Encrypt(tkt); 
      ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr); 

      ck.Path = FormsAuthentication.FormsCookiePath; 
      // ******* now i must somthing like this: --> Response.Cookies.Add(ck); 
      // but im in static method don't have respons request objects 
      // i want respons in json form and proccess the json 


      // return "Success"; 
     } 
     else 
     { 
      //return "Faild"; 
     } 

    } 

탱크

+0

그래서 어떤 문제가 .. 설정 세션/쿠키 그리고 당신의 리디렉션 페이지에 그것을 사용 .. –

+0

이 업데이트 LoginView 및 LogginName는 미국, – Mohammadreza

+0

제어 방법 어떻게 같이 설정 세션 또는 쿠키 – Mohammadreza

답변

0

당신은 할 수 있도록 다음

var onSuccess = function (result) { 
    if (result === null) { 
     // login failed 
     return; 
    } 
    window.location.href = result; 
}; 

PageMethods.login(myData, onSuccess); 

불행하게도 여전히 "침묵을 가지고이 : 자바 스크립트에서 다음

FormsAuthentication.SetAuthCookie(myfrm[0].value, createPersistentCookie: false); 
return FormsAuthentication.GetRedirectUrl(user.Name, false); 

과 "ThreadAbortException 나는 제거 할 수없는 것 같지만 보이지 않습니다. 문제를 일으킬 수 있습니다. 아마도 피할 수없고 양성 스럽다고 생각합니다.