Javascript Sencha Touch 2-登录用户状态

Javascript Sencha Touch 2-登录用户状态,javascript,sencha-touch,sencha-touch-2,Javascript,Sencha Touch,Sencha Touch 2,我正在创建一个ST2应用程序,您可以在其中登录/注册等 我想知道登录并在整个应用程序中显示用户状态的正常方式是什么 我有一个带有REST代理的用户模型来获取/保存数据。加载应用程序时,我这样做是为了抓住用户: launch: function () { var User = Ext.ModelManager.getModel('App.model.User'); User.load("", { success: function (user) {

我正在创建一个ST2应用程序,您可以在其中登录/注册等

我想知道登录并在整个应用程序中显示用户状态的正常方式是什么

我有一个带有REST代理的用户模型来获取/保存数据。加载应用程序时,我这样做是为了抓住用户:

launch: function () {
    var User = Ext.ModelManager.getModel('App.model.User');
    User.load("", {
        success: function (user) {

            // I have the user here but it's only within this scope

        }
    });
}
但这样做只能在这个函数中使用。。。那么,在整个应用程序中,人们通常做些什么来获取用户的信息呢?只需将其存储在应用程序中,如:

application.user = user;
或者,您是否使用用户模型创建ID为User的存储,然后使用以下内容检索:

launch: function () {
    var User = Ext.StoreManager.get('User');
    User.load(function(user) {
        // Do application logged in stuff
         self.getApplication().fireEvent('userLogsIn');
    });
}

someRandomFunction: function () {
    var user = Ext.StoreManager.get('User').getAt(0),
        email = user.get('email');
        console.log(email);
}

谢谢,Dominic

一般来说,您不能依赖JS应用程序中本地保存的任何信息。它可以相对容易地被欺骗和修改


您需要做的是将用户名/密码组合发送到服务器后端。然后,服务器应返回加密的cookie,该应用程序将随以下每个请求一起发送回服务器。只有通过解密和验证此cookie服务器才能确保登录用户的身份

不清楚你想要什么。。。您是询问解决方案还是希望得到您的解决方案的确认?我的意思是application.user=user…基本上只是询问人们如何让用户登录,然后在整个应用程序中保持这种状态。我可以使用Ext.StoreManager.get('User')在整个应用程序中获取数据,因为AJAX调用已经完成。但是当您执行Ext.ModelManager.get('App.model.User')时,每次都需要加载它。那么,通常的做法是什么呢?我在考虑创建一个存储区,但是当一个用户对象像一个单例模型一样存储在一个用户数组中是没有意义的。我们使用的是Zend Framework/PHP,所以当应用程序第一次加载时,用户对象是使用PHP会话ID从服务器抓取的。这不是真正的问题,因为在发出请求时服务器检查会话ID。我想知道的是如何在不同的页面之间存储这些信息。我不能每次你点击一个页面都向用户发出请求,因为它看起来很慢。如果您不关心服务器端,那么服务器会说用户没有登录,所以他们将无法做任何不应该做的事情-只需将其保存在本地的某个全局变量中,您可以从代码中的任何位置访问该变量。