2012-11-27 62 views
2

我正在用護照本地身份驗證構建單頁應用程序。 用戶通過身份驗證並返回app.post "/login" 返回userobject後,我將它保存在Chaplin.mediator.user(如在facebook-example中所見)。只要我不手動更改URL,一切都正常,但是當我更改URL並按回車鍵時,應用程序會以不同的路線再次加載 - >前端沒有用戶。手動更改路由後,mediator.user會丟失

我現在正在做的是每次我手動更改路由時,我向服務器發送一個請求並要求req.user中的用戶。收到用戶後,應用程序將繼續其工作流程。它的工作原理,但我不認爲這是它的意圖。如果您不等待響應,但最終沒有用戶對象,但您已登錄。

如何解決此問題?

編輯:我最終將用戶保存在一個單獨的cookie中。 這是我如何保存用戶:

$.cookie.json = true; 
    $.cookie 'user', user.toJSON() 

這就是我如何提取用戶加載頁面後:

userCookie = $.cookie 'user' 
    if userCookie? 
    mediator.user = new Model JSON.parse userCookie 

您需要jquery-cookie plugin,使其工作。如果用戶註銷,請不要忘記刪除Cookie。當然,我仍然接受其他想法。

回答

1

您應該在本地存儲用戶(aka會話)。當加載應用程序Backbone時,如果用戶實際上已登錄,則應將用戶路由到正確的位置。