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

时间:2016-10-19 18:26:47

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

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

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

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

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

你可以做一些事情:

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

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

  3. 修复API的稳定性,以便不必经常重启node.js服务器。