【问题标题】:Is it possible to store a database server connection during a Node server restart?是否可以在节点服务器重新启动期间存储数据库服务器连接?
【发布时间】:2016-10-19 18:26:47
【问题描述】:

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

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

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

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

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

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

提前致谢!

【问题讨论】:

  • 请修正问题标题中的拼写错误。老实说,我不确定您的意思是什么,否则我会自己解决。我不认为你“让数据库感到痛苦”,所以有些不对劲。
  • @jfriend00 我很抱歉。现在已经修好了。
  • 我想这是不言而喻的,最好修复您的 API 并使其稳定,这样您就不必定期重新启动节点服务器。如果我打算投入大量工程来解决这个问题,那似乎是一个更好的地方来消磨你的时间。

标签: sql-server node.js knex.js


【解决方案1】:

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

你可以做一些事情:

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

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

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

【讨论】:

  • 谢谢!您能否提供有关如何实现自定义代理流程的任何参考?
  • @FlashDark - 在这种情况下,它只是一个自己的服务器,它是您的数据库连接的持有者,使用一些简单的 API 来创建连接并在其上发送请求。
猜你喜欢
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多