Сохранить информацию для входа после входа в 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);
}

Вторая страница, которая мне нужна, чтобы получить список продуктов, созданных пользователем

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

Не удается получить сеанс, потому что ajax был загружен во время запуска приложения

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

person tuan.it89    schedule 30.08.2013    source источник
comment
Просто рекомендация, я предлагаю перейти на подход с токенами или аналогичный   -  person Nico Grunfeld    schedule 30.08.2013


Ответы (1)


Вы можете удалить конфигурацию:

autoLoad: true

И вызовите это в своей функции обработчика успеха входа в систему:

Ext.getStore('yourStoresId').load({
    callback: function() {
        console.log('my store has loaded');
    }
});
person philosofis    schedule 02.09.2013