【问题标题】:Separated frontend with backbone.js and node.js backend token用backbone.js 和node.js 后端令牌分离前端
【发布时间】:2015-08-10 18:55:55
【问题描述】:

我有分开的项目,

带有 express 的服务器端 node.js 服务于 restful api,但返回 JSON 而不是 html。互联网上所有的例子都是用ejs返回html。

前端是独立的应用程序,带有主干和 socket.io。

我想做一个登录和注册页面,我在服务器端使用了 passport.js,但我不知道如何将令牌发送到前端并将其存储在那里以便在每次请求时发送它服务器。如果用户不在会话中,则必须显示登录页面。

我想要一种与 oauth 2.0 兼容的方式来实现多种身份验证策略。

对不起我的英语,我有很多帅哥,我不懂所有的概念。

【问题讨论】:

  • 所有路由都是由骨干路由器完成的,而不是用express中的服务器路由页面。
  • “网上所有的例子都是用ejs返回html的。” 嗯……restful api例子肯定不都是返回html的。
  • "我想做一个登录和注册页面,我在服务器端使用了 passport.js,但我不知道如何将令牌发送到前端并存储它在那里将它发送到服务器的每个请求。如果用户不在会话中,则必须显示登录页面。" 如果您使用的框架没有,您必须自己构建该功能为你而做。只需有一个与 api 交互的登录页面,然后将令牌存储为 cookie 以用于将来的请求。

标签: javascript json node.js backbone.js


【解决方案1】:

基本上你有一个 API 和一个客户端,你需要两个东西:

  • 能够在 API 上打开会话的客户端。
  • 客户端能够将其会话凭据嵌入到每个请求中,以便 API 知道谁在执行查询。

第一步

为了打开会话,您已经想通了:您希望您的 API 成为 Oauth 客户端

因此,当用户想要登录时,您的客户端会将其重定向到 http://api.yourserver.com/login/google,该http://api.yourserver.com/login/google 将重定向到 google,它会使用允许您的 API 访问 Google 的 API 的令牌再次重定向到您的 API(因此,知道谁你的用户是)。

此令牌不能用于针对您的 API 进行身份验证。它的唯一目标是允许您的 API 代表用户在 google 服务上执行操作。

第二步

然后您需要决定您的客户端将如何针对您的 API 进行身份验证。您可以选择使用几乎每个人都使用的 cookie(这是快速会话的合理默认设置)。

或者,如果您的 API 被许多不同的客户端使用,而您无法控制这些客户端,您可以选择实施 Oauth 服务器来保护您的 API。

然后,客户端将使用“Bearer Token”(它是一个 HTTP 标头)针对您的 API 进行身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2017-03-10
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多