手动更改路由后,mediator.user将丢失

时间:2012-11-27 21:03:39

标签: node.js backbone.js express passport.js chaplinjs

我正在使用护照本地身份验证构建单页面应用程序。 用户已通过身份验证并在app.post "/login"内返回 返回userobject后,我将其保存在Chaplin.mediator.user中(如在facebook示例中所示)。只要我不手动更改URL,一切正常,但是当我更改URL并按Enter键时,应用程序会再次加载但是使用不同的路径 - >前端没有用户。

我现在正在做的是每当我手动更改路线时,我都会向服务器发送请求并在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 个答案:

答案 0 :(得分:1)

您应该在本地存储用户(也称为会话)。当Backbone应用程序加载时,如果用户实际上已经登录,则应该将用户路由到正确的位置。