Keep login infomation after login in sencha touch 2

564 Views Asked by At

I make an small web-application using Sencha touch 2. I have already done with login page. The purpose of second page is get current User session who post Products. This is login page

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.');
        }
    });
}

And server-side:

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);
}

The second page that i need get a list procducts created by user

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

Can not get session because the ajax was loaded at the time of startup app

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

There are 1 best solutions below

0
On

You could remove the config:

autoLoad: true

And call this in your login success handler function:

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