我正在嘗試使用Backbone來實現與Devise(Rails的身份驗證gem)的身份驗證。用戶可以通過發送刪除請求到/users/sign_out/
登出骨幹的,所以如果我點擊它,它是一個GET請求Backbone中的類方法
<li><a href="https://stackoverflow.com/users/sign_out" class="thumbnail plain">sign out</a></li>
然後我在用戶模式創造出了註銷方法,我不能讓這個環節,因爲工作,但要觸發它,我必須有一個用戶模型的實例(顯然)。我在路由器中創建了一個註銷方法,該方法通過導航到logout
路由而被觸發,但由於我只能通過其實例在用戶模型上調用logout
,所以我在註銷方法中創建一個新模型以調用註銷。
"logout": "logout"
},
logout: function(){
var foo = new app.Models.User
foo.logout();
}
這顯然是一個壞主意,但我不知道該怎麼辦。你能推薦我應該做什麼嗎?有沒有一種方法可以使註銷成爲類方法,所以我不必爲了註銷或其他目的而實例化新模型?
更新
這是在發送所述登記數據制定用戶模型中的createUser方法。在成功回調中,它將會話分配給變量window.app.current_user = userSession;
。我也有用戶模式註銷的方法,我試圖從路由器這樣調用
註銷路由器
logout: function(){
window.app.current_user.logout();
}
-
app.Models.User = Backbone.Model.extend({
initialize:function() {
},
createUser: function() {
var user = {};
user['email'] = this.get("email");
user['password'] = this.get("password");
user['password_confirmation'] = this.get("password_confirmation");
var registration = {};
registration['user'] = user;
var _this = this;
$.ajax({
url: '/users.json',
type: "POST",
data: {user: user, registration: registration},
success: function(userSession, response) {
window.app.current_user = userSession;
},
... code ommitted
logout: function(){
var me;
console.log("Logging out...");
me = this;
return $.ajax({
url: '/users/sign_out',
type: "DELETE",
dataType: "json",
success: function(data, textStatus, jqXHR) {
window.app.current_user = '';
},
error: function(jqXHR, textStatus, errorThrown) {
return alert("Error logging out: " + errorThrown);
}
});
},
我也有用戶模型的登錄方法。用戶登錄,但我沒有會話,如果我有一個帶有註銷方法的會話模型,那麼我仍然需要有一個可用於調用註銷的會話實例,這與使用我描述的用戶模型。但是我敢肯定,我所做的一切都是錯誤的,所以如果你可以給出關於如何保持session進入javascript的指針,以便我可以呼叫註銷它會很有幫助 – Leahcim
@Leahcim:如果你有一個用戶你爲什麼不在某處保存對該用戶的引用,以便你可以調用'logout'呢? –
@muistooshort所以只分配從登錄到成功回調(到登錄)一currentUser變量的反應如何?保持currentUser一個全局變量? – Leahcim