【问题标题】:How do i authenticate my api (node app) when being accessed by my UI?当被我的 UI 访问时,如何验证我的 api(节点应用程序)?
【发布时间】:2020-07-25 00:50:06
【问题描述】:

我已经研究了各种方法来解决这个问题,但我还没有找到一种最适合我的设置的方法。

我有一个调用 api 来向用户呈现数据的 UI - UI 不需要有人登录,我不想对每个用户进行身份验证。我要做的只是保护 api,因为有了 api 的 url,任何人都可以访问数据。

在我看来,我可以创建某种密码/apikey,并将其存储为环境变量,每当发出请求时,它就会从 UI 发送到 API。在 API 上,在允许访问 api 之前验证 apikey/password。

这听起来明智吗?你会建议别的吗?我错过了什么吗。欢迎所有想法。

【问题讨论】:

    标签: node.js authentication api-key


    【解决方案1】:

    这个解决方案对我来说听起来不错。你可以这样做:

    • 后端:在您的 Node.JS 应用程序中创建一个新的 REST 端点(类似于 /api/get-token),该端点生成一个令牌(或 ID),将其保存在本地(可能保存到 DBMS 中)并返回它作为回应。然后,在您需要保护的每个端点中,从请求中提取令牌,并在发送任何“私有”数据之前,检查提供的令牌是否有效。
    • 前端:一旦你的应用程序被加载,你就会向新创建的 REST 端点发送一个请求并在本地存储给定的令牌(localStorage 应该没问题)。然后,每当 UI 需要访问“私有”数据时,您只需在请求中提供声明即可。

    实现应该非常简单。

    【讨论】:

    • 谢谢!我在几个地方读到过,将其存储在 localStorage 不是一个好主意 - 为什么认为在这种情况下会没事?
    • 通常避免使用 localStorage 的主要原因是因为它是同步的,但对于像这样的小事情应该还不错。
    • 我会关注你一半的实现,但这不是我读过的关于 localStorage 的内容——在这里阅读rdegges.com/2018/please-stop-using-local-storage/…
    • 另外,当我的令牌过期时会发生什么?
    • 令牌过期超出了这个线程的范围。无论如何,很高兴能提供帮助。
    猜你喜欢
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2014-07-06
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多