0

我正在使用 Backbone.js 和 require.js 编写一个 Web 应用程序,它需要存储用户信息以在用户登录时在整个应用程序中使用。目前,当用户在那里提交凭据时,Web 服务会对用户进行身份验证并返回有关该用户的数据。传统上,我可以将这些信息存储在会话中。如何使用 Backbone 完成此任务?

4

3 回答 3

1

您可能希望为此使用 HTML5 SessionStorage。看看这个SessionStorageAdpater 进行骨干集成。

于 2013-03-20T23:48:50.227 回答
0

通常,将身份验证信息存储在加密的 cookie 中,该 cookie 在每次请求时发送到服务器。这本质上是将登录用户与 Web 服务器的身份存储相关联的值。

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

于 2013-03-21T00:50:56.950 回答
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,因此我不必将任何此类信息发送回服务器。

于 2013-03-21T00:57:11.290 回答