2013-08-30 3 views
0

나는 Sencha touch 2를 사용하여 작은 웹 응용 프로그램을 만듭니다. 이미 로그인 페이지로 작업했습니다. 두 번째 페이지의 목적은 제품을 게시하는 현재 사용자 세션을 얻는 것입니다. 이것은 로그인 페이지로그인 후 로그인 정보를 유지하십시오. 2

onSignInCommand: function (view, username, password) { 
    var me = this; 
    var loginView = this.getLoginView(); 
    if (username.length == 0 || password.length == 0) { 
     loginView.showSignInMessage("Please enter your username and password."); 
     return; 
    } 

    loginView.setMasked({ 
     xtype: "loadmask", 
     message:"Signing in..." 
    }); 

    //Set ajax 
    Ext.Ajax.request({ 
     url: "./ajax/Account.ashx", 
     params: { 
      type: "login", 
      username: username, 
      password: password 
     }, 
     success: function (response) { 
      var loginResponse = Ext.JSON.decode(response.responseText); 
      if (loginResponse.success) { 
       me.sessionToken = loginResponse.sessionToken; 
       me.showSignInSuccess(); 
      } else { 
       me.sessionToken = null; 
       me.showSignInFailedMessage(loginResponse.message); 
      } 
     }, 
     failure: function() { 
      me.sessionToken = null; 
      me.showSignInFailedMessage('Login failed. Please try again later.'); 
     } 
    }); 
} 

그리고 서버 측 있습니다 :

private void Login(HttpContext context) 
{ 
    var resultStt = ""; 
    var userid = context.Request["username"]; 
    var password = context.Request["password"]; 
    if(!string.IsNullOrEmpty(userid) && !string.IsNullOrEmpty(password)) 
    { 
     var user = new Select() .From<User>() 
           .Where("UserID").IsEqualTo(userid) 
           .And("UserPassword").IsEqualTo(password) 
           .ExecuteSingle<User>(); 
     if(user!=null) 
     { 
      context.Session.Add("PickerUser",user); 
      resultStt = " {\"success\":true, \"user\":{ \"userId\":"+user.UserID+", \"sessionId\":\"" + context.Session.SessionID + "\"}}"; 
     } 
     else 
     { 
      resultStt = " {\"success\":false, \"message\":\"Login failed. Please enter the correct credentials.\"}"; 
     } 
    } 
    context.Response.Write(resultStt); 
} 

내가 사용자가 만든 목록 procducts을받을 필요가있는 두 번째 페이지

store: { 
       autoload:true, 
       ... 
       proxy: { 
        type: "ajax", 
        url: "./ajax/process.ashx?type=loadassigned", 
        reader:{ 
         type:"json", 
         rootProperty: "data" 
        } 
       }     
      }, 

아약스 때문에 세션을 가져올 수 없습니다 시작시에로드되었습니다.

var currenUser = context.Session["PickerUser"] as User; 
+0

그냥 추천, 내가 토큰 방식 또는 유사한로 전환하는 것이 좋습니다 –

답변

0

당신은 설정 제거 할 수 있습니다 :

autoLoad: true 

을 그리고 로그인 성공 핸들러 함수에서 이것을 호출

Ext.getStore('yourStoresId').load({ 
    callback: function() { 
     console.log('my store has loaded'); 
    } 
}); 
관련 문제