【问题标题】:express nodejs where to store user identity [duplicate]express nodejs在哪里存储用户身份[重复]
【发布时间】:2022-11-21 22:01:25
【问题描述】:

我有一个自定义身份验证中间件:

export default async (req: Request, res: Response, next: NextFunction) => {
  try {
    const identity = await getIdentity(req);
    if (!identity) {
      throw new HttpError(401, 'Could not authenticate', [])
    } else {
      //Question: where to store the identity information so route middleware
      //   have access to it?
      //@ts-ignore
      req.identity = { hello: 'world' }
      console.log('should have added identity')
      next()
    }
  } catch {
    throw new HttpError(500, 'Unknown validation error', [])
  }
}

也许我的设计是错误的,但用户将发送自定义标头,这些标头将通过第三方服务进行身份验证以获取此用户/请求的身份详细信息。

【问题讨论】:

  • 我的意思是……那应该行得通吗?
  • @AKX 我可以确认它有效但想知道是否只是改变请求是可行的方法,如果未来的 express 实现将在请求中使用身份怎么办?

标签: javascript node.js express authentication


【解决方案1】:

也许有更好的解决方案,但现在,您可以创建 global 变量,您可以从任何地方读取和编辑这些变量。

1-创建一个types文件夹,如果它不存在,然后写入

declare global {
    user_data: user_type
}
export {}

2-您可以使用global.user_data在任何代码段中访问此数据以进行setget操作

注意:您应该在任何路由上的每个请求中更新此信息或将其设置为null以避免用户之间的数据泄漏

【讨论】:

  • 要么您正在对如何使用它做出一些您应该详细说明的假设,要么您忘记了多个用户可以同时访问一个网站,这会在用户之间泄露数据。
  • @Quentin 当然,他应该确认并更新每个请求的值。注释添加到答案
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 2012-08-31
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多