首页 > 解决方案 > 开发阶段的Nestjs应用结构

问题描述

一些上下文

我正在为学校做我的第一个nestjs项目。我在项目的后端工作。总而言之,它是一款在线游戏,用户可以在其中玩游戏和聊天、设置帐户信息、在列表中添加朋友、查看排行榜等......

登录它的唯一方法是通过学校的 OAuth。用户无法使用电子邮件/密码登录。

问题

所以在开始开发第一条路线时:身份验证,帐户信息检索,注销,朋友列表等......我面临一个测试功能的问题。 我在学校的 OAuth 中只有一个帐户,因此我无法测试添加朋友之类的许多事情,因为它需要数据库中存在其他帐户。

我幼稚的做法

当然,用于开发阶段的数据库与用于生产的数据库不同:用于开发/测试的 sqlite 和用于生产的 postgresql。

我的问题

您将如何针对这些功能构建您的应用程序?

我可能需要在整个开发阶段管理这些虚假帐户,在现实生活中的应用程序中,即使在部署之后我也可能不会摆脱这些路线,因为未来的发展需要它们。

非常感谢您对此的看法。

标签: node.jssecuritybackendnestjs

解决方案


我会为新用户实现自己的身份验证保护,保留学校的 OAuth 帐户仅用于管理操作(因此该用户基本上可以访问所有应用程序路由),同时提供允许新用户注册应用程序的公共路由。该端点会将用户连同提供的访问凭据一起注册到数据库(记住在保存到数据库之前对密码进行哈希处理)。然后我会有两个登录端点:

  • 一个用于 OAuth 登录
  • 一个用于签署 JWT 并将其返回给调用者的用户登录

(或者您也可以拥有一个并找到一种方法来了解请求访问的用户是否是管理员,由您决定)

然后我会开发两个守卫:

  • 一个用于 OAuth 访问
  • 一个用于 JWT 一个

并将 JWT 守卫仅放在非管理路由上。

在这里,您可以找到有关 Nestjs 服务器上 JWT 身份验证的文档。


推荐阅读