2011-12-22 89 views
1

我在登錄頁面上有一個帶有用戶名和密碼文本字段的表單。現在用戶註冊一個帳戶,我想將他添加到用戶模型。當他登錄時,我需要檢查用戶名/密碼組合是否準確,以允許進入Sencha應用程序。我不知道如何去驗證登錄/通行證組合。有人幫忙!這是我的代碼。從本地存儲器驗證登錄憑證Sencha

的型號:

App.models.Users = Ext.regModel('Expense',{ 

fields : [ 
    { name : 'id', type : 'integer'}, 
    { name : 'email', type : 'string'}, 
    { name : 'pass', type : 'string'} 
], 

validations : [ 
    { name : 'email', type : 'presence', message : 'cannot leave field blank'}, 
    { name : 'pass', type : 'presence', message : 'cannot leave field blank'} 
], 

proxy : { 
    type : 'localstorage', 
    id : 'user-creds' 
} 
}); 

商店:

App.stores.User = new Ext.data.Store ({ 
    model : 'Users', 
    autoLoad : true, 
    autoSave : true 
}); 

表單是一個基本的,具有的xtype 「文本框」 的電子郵件,以及 「passwordfield」 爲密碼。

如何驗證表單中輸入的詳細信息是否與存儲在localstorage中的信息匹配?

回答

4

當您點擊按鈕進行登錄時,您需要嘗試查找在商店中輸入的電子郵件地址。

App.stores.User.findRecord('email', < the value entered on the form >) ; 

如果找到匹配項,此方法將返回記錄。一旦有記錄,您可以檢查記錄中的密碼是否與表格中輸入的密碼相符。

Refer to Store in the Sencha Touch docs

更新:

假設你遵循MVC模式...

您需要:

  1. 的文本框位於FormPanel
  2. 控制器

在視圖中,您的登錄按鈕分派到控制器:

this.loginButton = new Ext.Button({ 
     text: 'Login', 
     ui: 'action', 
     handler: function() { 
      Ext.dispatch({ 
       controller: App.controllers.loginController, 
       action: 'login' 
      }); 
     }, 
     scope: this 
    }); 

在你的控制器,該代碼檢索表單值:

'login': function (options) { 

    var formDetails = App.views.loginView.getRecord(); 

    var store = Ext.StoreMgr.get('users'); 
    var record = store.findRecord('username', formDetails.get('username'), 0, false, true); 

    if (record != null) { 

     if (formDetails.get('password') == record.get('password')) { 
     // valid login 
     } else { 
     // wrong password 
     }   

    } else { 
     // username doesn't exist 
    } 

} 

我希望這有助於。

+0

如何檢查記錄中的密碼是否與表單中的密碼匹配?如在中,我如何訪問由表單返回的數據?我在文檔中搜索,但無法找到任何東西:( – SashaZd 2012-01-05 11:22:57