0

私は sencha touch が初めてで、ユーザーがアプリを使用できるようにログインする必要があるアプリを作成しようとしています。さらに、認証が正しい場合にjson形式でユーザーを応答するユーザー認証用の安らかなAPIを作成しました。ユーザー認証の API URL は次のようになります。http://api-url/user/$username/$password.

マイログインビュー:

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'

        }
    ]
}

});

また、ユーザーモデルもあります:

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){

}    

});

前述したように、私の API は完全に安静です。私は ajax プロキシを使用できないと思います。残りのプロキシを使用する必要があります。私の大きな質問は、ユーザー名とパスワードを安らかなAPIに渡すにはどうすればよいですか?

これを手伝ってくれる人はいますか(できれば例を挙げて)?

4

1 に答える 1

3

RESTful API の精度を少し上げるだけです。ユーザーを認証しようとしているので、暗号化/ハッシュ化されていても、ログインとパスワードをURL に含めることはできません。代わりに、url api-url/user/ を使用した POST 要求と、ユーザー名とパスワードを含む POST メッセージ (たとえば json) を優先してください。

ajax リクエストの場合、コントローラーで次のようにする必要があります (すべてが適切に機能すると仮定します)。

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){

    }    
});

コードテスト済みです。

于 2013-03-28T17:33:56.480 に答える