与backbone.js的用户会话

时间:2013-03-20 23:18:24

标签: javascript jquery backbone.js requirejs

我正在编写一个带有Backbone.js和require.js的Web应用程序,需要存储用户信息,以便在用户登录时在整个应用程序中使用。目前,当用户提交凭证时,Web服务对用户进行身份验证并返回有关该用户的数据。传统上,我可以将该信息存储在会话中。我怎样才能使用Backbone实现这一目标?

3 个答案:

答案 0 :(得分:1)

您可能希望使用HTML5 SessionStorage。查看this SessionStorageAdpater进行骨干网集成。

答案 1 :(得分:0)

通常,将身份验证信息存储在每个请求发送到服务器的加密cookie中。这实际上是一个将登录用户与Web服务器的标识存储关联起来的值。

您可能对个人资料数据更感兴趣(即有关用户的元数据 - 名字,生日等)。一旦用户登录,当页面加载时,通过对服务器的ajax调用获取有关当前用户的配置文件数据(该请求将包括auth cookie,Web框架将使用该cookie来查找当前登录的用户) 。因此,您应该在Web应用程序上公开一个路径,该路径返回一个json数据结构,其中包含您的应用程序所需的有关当前用户的配置文件数据。

答案 2 :(得分:0)

我目前正在编写一个大型Backbone / Marionette应用程序。我将用户信息(不是密码或其他类似信息)存储在名为user的模型中。然后,我使用此模型首先通过检查sessionid来验证用户。

// before every request
if (app.Core.models.user.get('sessionid') != "") {
  // then I run the code.  Authentication can still fail on the server.
} else {
  // trigger the event to bring up the sign in page
  app.vent.trigger('App:Core:Login');
}

用户登录应用程序后,我将app.Core.models.user模型中从身份验证中收到的信息保存起来。由于我的身份验证不会返回完整的用户名,因此我会进行单独的ajax调用以检索此信息并将该信息存储在模型中。然后,我将模型绑定到页面的一部分,自动更新页面标题中的用户名。

浏览器会自动存储加密的cookie,因此我不必将任何此类信息发送回服务器。