2013-03-28 2 views
0

Я новичок в sencha touch и пытаюсь создать приложение, в котором пользователь должен войти в систему, чтобы иметь возможность использовать приложение. Кроме того, я создал успокоительный api для аутентификации пользователя, который отвечает за пользователя в json-формате, если проверка подлинности верна. Апи URL для аутентификации пользователя выглядит следующим образом: http://api-url/user/$username/$password.Sencha touch 2 пользовательский логин пример

Мои Войти Вид:

Ext.define('NCAPP.view.tablet.LoginForm', { 
extend: 'Ext.form.Panel', 
xtype:'loginForm', 
id:'loginForm', 

requires:[ 
    'Ext.form.Panel', 
    'Ext.form.FieldSet', 
    'Ext.field.Password', 
    'Ext.Img', 
    'Ext.field.Toggle' 
], 
config: { 
    items: [ 
     { 
      xtype: 'image', 
      src:'resources/img/netcenter_logo.png', 
      height: 100 
     }, 
     { 
      xtype: 'fieldset', 
      title: 'NCAPP LOGIN:', 
      items: [ 

       { 
        xtype: 'textfield', 
        id:'fldUsername', 
        name:'username', 
        placeHolder: 'Username' 
       }, 
       { 
        xtype: 'passwordfield', 
        id:'fldPassword', 
        name:'passowrd', 
        placeHolder: 'Password' 
       } 
      ] 
     }, 
     { 
      xtype: 'button', 
      id: 'btnLogin', 
      text: 'Login' 

     } 
    ] 
} 

});

И я также User Model:

Ext.define('NCAPP.model.User', { 
extend:'Ext.data.Model', 

config:{ 
    fields:[ 
     { name:'id', type: 'int'}, 

     { name: 'username', type: 'string'}, 
     { name: 'netshop_id', type:'int'}, 
     { name: 'firstname', type: 'string'}, 
     { name: 'lastname', type: 'string'}, 
     { name: 'address', type: 'string'}, 
     { name:'password', type:'string'}, 
     ] 


} 

});

И мой контроллер Войти:

Ext.define('NCAPP.controller.tablet.LoginController', { 
extend: 'Ext.app.Controller',  
config: { 
    refs: { 
     loginForm:'loginForm' 
    }, 
    control: { 
     '#btnLogin':{ 
      tap:'onLoginButtonTap' 
     }    
    } 
}, 
onLoginButtonTap:function(){ 

}, 
init:function(application){ 

}  

});

Как я уже говорил ранее, мой апи полностью успокаивается. Я думаю, что не могу использовать прокси ajax, и я должен использовать прокси-сервер для отдыха. Мой большой вопрос: как передать имя пользователя и пароль для спокойного api?

Может ли любое тело помочь мне с этим (желательно с примерами)?

+0

Несвязанный с ответом на ваш вопрос, но вы должны ** действительно ** не отправлять имя пользователя и пароль непосредственно по URL-адресу, используя простой HTTP. При отправке по HTTP вообще небезопасно, отправка его в URL-адресе делает еще проще, когда какой-нибудь случайный человек украл учетные данные пользователя. – jprofitt

+0

Не могли бы вы сообщить мне, что является лучшим способом аутентификации пользователя, если у меня есть успокоительный api? – Shree

ответ

3

Просто несколько уточняйте свой API RESTful. Когда вы пытаетесь аутентифицировать пользователя, логин и пароль, даже если зашифрованные/хешированные должны никогда не быть в вашем URL-адресе. Вместо этого предпочитайте POST-запрос с url api-url/user/и сообщение POST (например, json), содержащее ваше имя пользователя и пароль.

Для АЯКС запроса в контроллере, вы должны сделать что-то вроде (предполагается, что все работает должным образом):

Ext.define('NCAPP.controller.tablet.LoginController', { 
    extend: 'Ext.app.Controller',  
    config: { 
     refs: { 
      loginForm:'loginForm' 
     }, 
     control: { 
      '#btnLogin':{ 
       tap:'onLoginButtonTap' 
      }    
     } 
    }, 
    onLoginButtonTap:function(){ 
     var values = this.getLoginForm().getValues(); 
     var jsonToPost = {}; 
     jsonToPost.user = values.username; 
     jsonToPost.passwd = values.password; 
     Ext.Ajax.request({ 
      url: 'your-url/user', 
      method: 'POST', 
      params: jsonToPost, 
      success: function(response) { 
       // Server send a 200 code response. it means it understood the request and was able to deal with it 
       // you should check whether or not it is a success. Your answer JSON should contain this information 
      }, 
      failure: function(response) { 
       // any other response than a 200 
      } 
     }); 
    }, 
    init:function(application){ 

    }  
}); 

Код был протестирован.

+0

Привет Пьер, Спасибо за ваш ответ. Мне интересно, как я могу получить имя пользователя и пароль в API, если у меня есть запрос на отправку. (Я должен проверить имя пользователя и пароль для базы данных в api). Мне жаль, что я совершенно новый в разработке sencha touch и API. – Shree

+0

Позвольте мне отредактировать ответ с более подробной информацией. Пример REST, который я вам дал, является правильным, хотя, как сказал jprofitt в своем другом ответе. Но вы должны рассмотреть хотя бы SSL-соединение для большей безопасности. Но это тема для другого вопроса! – Pierre

+0

Я буду использовать SSL-соединение в рабочей среде. спасибо – Shree