是否可以在节点服务器重启期间存储数据库服务器连接?

Is it possible to store a database server connection during a Node server restart?

成功登录后,应用程序中的每个用户都会收到一个授权令牌和专用 SQL 服务器连接。

当节点服务器收到请求时,它会检查授权令牌,如果它有效 - 使用用户专用的连接向数据库发出请求。

令牌和连接存储在常规 JSON 对象中,该对象在节点服务器重新启动后被清除。因此,用户必须再次输入他们的 SQL 服务器凭据。

由于我的API不稳定,需要频繁重启Node服务器,给用户带来一些不便。

我使用专用连接的原因是能够管理用户在 SQL 服务器级别的访问(授予对某些表或视图的访问权限),并使用 SUSER_SNAME() 函数为了记录用户的活动。这种方法还允许我实现行级安全模型。

或者也许有一种方法可以为 SQL 服务器会话存储某种令牌,从而允许在不提供用户凭据的情况下连接到服务器?

提前致谢!

您无法在服务器重启期间存储数据库连接。该连接属于特定进程,因此当该进程被终止时,连接也会被终止。

您可以做一些事情:

  1. 将数据库连接移动到不会重新启动的自定义代理进程,您的节点应用程序只会重新连接到代理。当您的 node.js 服务器重新启动时,这将允许在代理中保留实际的数据库连接。

  2. 将用户凭据存储在本地数据库中,这样当您的 node.js 服务器重新启动时,您可以重新连接到数据库而无需再次要求用户提供他们的凭据。这具有明显的安全隐患。

  3. 修复 API 的稳定性,这样您的 node.js 服务器就不必经常重启。