1

backbone.js を使用した Web アプリケーション用の非常にシンプルなログイン システムが必要です

ワークフロー: アプリ起動 -> LoginView -> ログイン時 -> アプリ

これが私の解決策です。どうすればよいですか?

ログイン状態モデル:

window.LoginStatus = Backbone.Model.extend({
defaults: {
    loggedIn: false,
    userId: null,
    username: null,
    error: "An Error Message!"
},

initialize: function () {
    _.bindAll(this, 'getSession', 'setStorage');
},

getSession: function (username, password) {
    var tmpThis = this;
    $.getJSON('http://requestURL.de/getSession.php?username=' + username + '&password=' + password, function(data) {
        if (data != null) { 
            tmpThis.setStorage(data.id, data.username);
            $.mobile.changePage("#home");
        }                                   
    });
},
setStorage: function(userId, username) {
    localStorage.setItem("userId", userId);
    localStorage.setItem("username", username);
    this.set({ "loggedIn" : true});
}
});

ここに私のログインビューがあります:

window.LoginView = Backbone.View.extend({

el: $("#login"),

initialize:function () {
    this.render();
},

events: {
    "click input[type=submit]": "onSubmit"
},

onSubmit: function(event) {
        var username = $(this.el).find("#user-username").val(),
            password = $(this.el).find("#user-password").val();

        this.model.getSession(username, password);

        return false;
},
render:function () {
    if (this.model.get("loggedIn")) {
        var template = _.template( $("#login_template").html(), {} );
    } else {
        var template = _.template( $("#login_template").html(), { "error" : this.model.get("error") } );
    }
    $(this.el).html( template );
}

});
4

2 に答える 2

2

あなたへの私の提案は、バックボーンアプリの外部でログインを行い、ログインプロセスが成功した後にのみ「シングルページアプリ」にアクセスできるようにすることです

于 2012-07-31T23:37:44.787 に答える