2012-07-08 38 views
2

我創建一個應用程序ST2,您可以登錄/註冊等煎茶觸摸2 - 登錄用戶狀態

我想知道正常的方法是在記錄的東西,並且具有在整個應用程序的用戶狀態。

我有一個帶有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的商店,使用用戶模型,然後用檢索:

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

感謝,多米尼克

+0

不清楚你想要什麼......你問關於解決方案還是你想確認你的問題?我的意思是application.user = user ... – olegtaranenko 2012-07-08 20:34:08

+0

幾乎只是問人們如何處理用戶登錄,然後在整個應用程序中保持該狀態。由於AJAX調用已完成,我可以使用Ext.StoreManager.get('User')獲取整個應用程序中的數據。但是當你做Ext.ModelManager.get('App.model.User')時,你需要每次加載它。那麼通常做這件事的方法是什麼?我正在考慮建立一個商店,但是當用戶對象存儲在一個用戶數組中時,它就像是單一類型的模型一樣沒有意義。 – 2012-07-08 21:57:40

回答

1

一般來說,您不能依賴您在JS應用程序中本地保存的任何信息。它可以被欺騙和改變相對容易。

你需要做的是發送用戶名/密碼組合到你的服務器後端。然後,服務器應該返回加密的cookie,應用程序每發送一次請求就會發送回服務器。只有通過解密和驗證這個cookie服務器才能確定登錄用戶的身份。

+0

好吧,我們使用的是Zend Framework/PHP,所以當第一次加載應用程序時,使用PHP會話ID從服務器獲取用戶對象。由於服務器在請求發出時檢查會話ID,所以不是真正的問題。我想知道的是如何在不同的頁面之間進行存儲。我無法每次點擊頁面時都向用戶提出請求,因爲它看起來很慢。他們將無法做任何他們不應該做的事情,因爲服務器會說用戶沒有登錄,如果有的話 – 2012-07-09 09:05:13

+0

如果你不關心服務器端 - 只是在本地保存在你有權訪問的某個全局變量中來自代碼中的任何地方。 – sha 2012-07-09 11:13:18