2013-08-30 3 views
0

Я делаю небольшое веб-приложение, используя Sencha touch 2. Я уже сделал с страницей входа. Цель второй страницы - получить текущую сессию пользователя, которая публикует продукты. Это Войти страницаСохранять регистрационную информацию после входа в систему sencha touch 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'); 
    } 
}); 
Смежные вопросы