gpt4 book ai didi

node.js - 如何在远程方法中访问 "current logged-in user"?

转载 作者:太空宇宙 更新时间:2023-11-03 23:29:47 25 4
gpt4 key购买 nike

最近,在我的一个应用程序中,我需要访问当前登录的用户数据以保存在另一个模型中(例如一本书的作者或一本书的所有者)。在我的谷歌搜索中,我遇到了这些引用文献,但它们都没有用。

https://github.com/strongloop/loopback/issues/1495

https://docs.strongloop.com/display/public/LB/Using+current+context

...

他们都在访问contextreq对象时遇到这个问题。三天后,我决定切换到 afterRemote 远程 Hook 并在该阶段添加所有者或作者。但这个解决方案有问题。

在strongloop的文档(https://docs.strongloop.com/display/public/LB/Remote+hooks)中有一个变量ctx.req.accessToken,它保存当前登录的用户访问 token 。但在应用程序中这个变量是未定义的。相反,我在 ctx.req.query.access_token 中找到了 accessToken,它当前是发送到服务器的 access_token 变量。

这是我的问题:

  1. 此变量 (ctx.req.query.access_token) 始终可用还是这只是因为loopback-explorer将access_token作为GET发送变量?

  2. 在生产模式下,应用程序是否需要发送 access_token 作为GET 变量还是应该在 header 中作为 Authorization 发送?

  3. 为什么ctx.req.accessToken未定义?

  4. 这些事情会随着时间的推移而改变吗?导致大多数用户遇到此问题是由于 app.getCurrentContext()

  5. 被弃用

最佳答案

  1. Is this variable (ctx.req.query.access_token) always available or it's just because loopback-explorer send access_token as GET variable?

如果您的应用程序始终发送查询字符串,那么它将始终可供您使用,但它也会在 header 、cookie 或请求正文中发送,但我不建议使用它,因为如果用户登录并且访问 token 有效,并且 ctx.req.accessToken 应该可用,您就可以使用它。

  1. In production mode do applications need to send access_token as GET variable or it should be sent as Authorization in the header?

我相信授权 header 是首选,就像您在 GET 变量中发送它一样,它将在日志中可见,并且有权访问日志的人可以访问 session (除非您信任每个人),除此之外,将其放在 GET 变量中也很好。虽然我相信环回客户端 SDK(Angular、Android、iOS)默认情况下都通过 Authorization header 发送它,所以您可能必须配置它们(也许不可能)。

  1. Why ctx.req.accessToken is undefined?

有时,由于数据库驱动程序连接池,上下文会丢失,或者上下文请求丢失(ctx.req)并且它们为空。假设 ctx.req 已定义(因为有时没有),那么可能意味着用户未记录它,或者它的访问 token 无效(已过期或不在数据库中)。它也可能是一个错误(可能是您这边的配置错误),这也意味着您将遇到身份验证问题。

  1. Could these things change over time? cause most of users encounter this problem due to deprecation of app.getCurrentContext()

app.getCurrentContext 使用有风险,除非您没有其他解决方案,否则我不建议使用。如果您使用它并且它可以工作,那么如果数据库驱动程序发生更改,或者在某些您尚未测试的极端情况下,它可能会停止工作。

关于node.js - 如何在远程方法中访问 "current logged-in user"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39658975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com