【问题标题】:Who's responsible for Authentication in multi-client MEAN stack? [closed]谁负责多客户端 MEAN 堆栈中的身份验证? [关闭]
【发布时间】:2015-06-21 13:15:51
【问题描述】:

我的情况如下:

  • 我有一个使用 MongoDB 的 REST API Node.js 服务器,它将向客户端提供数据。
  • 我有一个 Web 客户端,它将从 API 服务获取数据并提供社交身份验证。

就我的问题而言,假设我有两个不同的客户端 - 两个 Web 应用程序。在这种情况下,谁应该负责社交身份验证、会话、cookie 等?用户数据库应该在所有客户端之间共享,但我觉得身份验证和 API 应该是两个独立的服务。

在这种情况下最常用的方法是什么?

客户端将使用 AngularJS 构建,REST API 服务使用 Node.js、Express、MongoDB、Mongoose 构建,当我弄清楚时最终使用 Passport.js。

谢谢

【问题讨论】:

  • 为什么你觉得认证和API应该分开?

标签: node.js mongodb rest express


【解决方案1】:

但我觉得身份验证和 API 应该是两个独立的服务。

如果您必须询问,您不想要 2 个单独的服务。 (服务意味着独立的网络守护程序/快速应用程序)

从单个 express 应用中的 2 个独立模块开始。您可以拥有一个auth.js 模块,该模块使用护照来处理身份验证和会话问题,然后为您的 API 中的每个实体创建一个模块文件。如果您的 auth.js 文件中需要超过 1000 行代码,考虑到护照正在为您完成大部分艰苦的工作,那么就出了问题。退后一步,要求进行代码审查。

如果您希望 2 个 Web 应用程序中的每一个都拥有自己的 Express 服务器,只需将 auth.js 模块分解到其自己的可共享 npm 模块中,并从每个 Web 应用程序中获取它。

将事物拆分为微服务适用于大规模的大型团队项目。在最初几年坚持使用单一的简单快速服务器(或者对于不支持快速增长的初创公司的项目永远坚持下去)。

【讨论】:

  • "for each entity in your API" - 实体是指端点吗?
  • 否则我同意,我想我会听从你的建议。单独的认证模块,而不是单独的服务。
  • 是的,我通常将我的 REST API 分成每个实体的模块,这些实体通常也映射到一个端点(但有时是多个)。因此,如果我要建立汽车经销商,就会有一个用于车辆、经销商、销售等的模块。
猜你喜欢
  • 2017-11-09
  • 2013-09-13
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
相关资源
最近更新 更多