最简单的 Node.js/Express 授权

Posted

技术标签:

【中文标题】最简单的 Node.js/Express 授权【英文标题】:Easiest Node.js/Express authorization 【发布时间】:2019-05-05 17:36:40 【问题描述】:

我正在为我们的前端创建 API,但我无法为基本的 Node.js/Express 授权需求找到最简单的解决方案。我已经进行了身份验证,但我想保护特定的 API 路由。

示例案例: 用户只能获取(和编辑)自己的个人资料,因此他无法获取其他人提供的电子邮件地址

我已经阅读了有关会话的信息,也阅读了有关 JWT 的信息。不太确定要走哪条路 - 我不需要任何花哨的东西,只要能保护用户数据不被未经授权的用户获取。

我正在使用 MariaDB 和本地身份验证策略(电子邮件/密码)。

【问题讨论】:

【参考方案1】:

如果您已经实现了本地身份验证策略,我将为您要保护的 API 资源添加 JWT。使用护照库非常容易。

使用 JWT,您可以获取发送请求的用户并进行所需的所有安全检查。

【讨论】:

注销怎么样?删除令牌会完成这项工作还是还有更多工作要做? JWT 令牌是自有内容,建议包含过期日期,过期后无法再次使用令牌。如果您设置的过期日期不是很长,则足以控制它。您可以使用刷新令牌来补充非常短的过期时间。 我还发现了这篇文章:medium.com/devgorilla/how-to-log-out-when-using-jwt-a8c7823e8a6,这就是为什么我在苦苦挣扎的原因,因为令牌似乎比会话少麻烦,而且控制力也少了一点。另一方面 - 大型服务正在以某种方式使用这些...... 我已经使用它很长时间了,我建议使用它比使用会话更好。您可以使用刷新令牌和调整时间添加一些控件。也看看这篇文章:solidgeargroup.com/… 我写了那篇文章,谢谢:)。我们通常实现注销的方式是委托客户端负责删除令牌。暂时你没有token,注销也是一样的。我们通常使用很短的过期时间,并且客户端必须实现自动刷新令牌,因此每次令牌过期时,客户端都会自动为用户透明地刷新令牌。有了这个,您可以禁止用户再次验证,并取消其刷新令牌。

以上是关于最简单的 Node.js/Express 授权的主要内容,如果未能解决你的问题,请参考以下文章

Node.js/Express - 找不到页面时呈现错误

如何使用 Express.js 将 API 访问限制为仅授权域?

如何从 node.js Express 发送 POST 请求?

简单的游戏循环 Socket.io + Node.js + Express

Node.js 应用程序的授权方法和设计模式 [关闭]

IdentityServer4-前后端分离的授权验证