【发布时间】:2017-07-04 04:36:38
【问题描述】:
上下文:
我正在尝试使用 Nginx 作为前端服务器并作为后端 NodeJS 服务器的代理来构建一个 webapp。我想通过适当的身份验证机制限制对 webapp 功能部分的访问。身份验证逻辑由 NodeJS 服务器处理并使用 JWT 来处理。
当前流程:
- 静态登录页面显示给由 Nginx 提供服务的用户。
- 用户凭据被发送到 Nginx 服务器,该服务器被转发到处理登录逻辑的 NodeJS 服务器,并在成功的身份验证后发回 JWT 令牌。 (所有 www.baseurl.com/api 请求都被转发到 NodeJS 服务器)
- JWT 存储在客户端浏览器的 localStorage 中(由 Auth0 团队推荐),然后我想将用户重定向到功能性 webapp 页面(例如 /home)。
- 对于重定向,我请求使用我的 JWT 令牌访问 Nginx 服务器的 /api/home 页面。该请求被转发到 NodeJS 以验证令牌。验证后,我需要提供包含 .html、.css、.js 文件的 webapp 功能主页。
- 由于页面本身首先呈现为静态,然后它发出 ajax 请求以加载更多内容,因此我想从我的 Nginx 服务器提供此主页,而不是从 Node JS 服务器发送整个 HTML 字符串。一旦静态页面加载到客户端机器上,我想开始向节点服务器发出请求,根据用户的权限请求更多页面内容。
问题陈述:
如何使用 Node 和 Nginx 实现相同的目标? Nginx 怎么知道 NodeJS 已经在第 4 步验证了用户令牌,然后提供主页的静态部分?
这甚至可能吗?处理此类身份验证流程的最佳推荐方法是什么?
PS:我在服务器端使用 ExpressJS 框架,在客户端使用普通的 html/css/js(没有客户端 Web 框架)。
【问题讨论】:
标签: javascript node.js express nginx jwt