2011-12-22 4 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

Update:

Предполагая, что вы будете следовать шаблону 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

Смежные вопросы