成功登录后,应用程序中的每个用户都会收到授权令牌和专用SQL Server连接。
当节点服务器收到请求时,它会检查授权令牌,如果它有效,则使用专用于该用户的连接向数据库发出请求。
令牌和连接存储在常规JSON对象中,该对象在重新启动节点服务器后清除。因此,用户必须再次输入其SQL服务器凭据。
由于我的API不稳定,我需要经常重启节点服务器,这会给用户带来一些不便。
我使用专用连接的原因是能够管理用户在SQL服务器级别上的访问权限(授予对某些表或视图的访问权限),并使用SUSER_SNAME()函数来记录用户的活动。这种方法还允许我实现行级安全模型。
或许有一种方法可以为SQL服务器会话存储某种令牌,这样可以在不提供用户凭据的情况下连接到服务器?
提前致谢!
答案 0 :(得分:1)
在服务器重新启动期间无法存储数据库连接。连接属于特定进程,因此当该进程被终止时,连接也会被终止。
你可以做一些事情:
将数据库连接移动到未重新启动的自定义代理进程,并且您的节点应用程序只是重新连接到代理。这将允许在node.js服务器重新启动时将实际数据库连接保留在代理中。
将用户凭据存储在本地数据库中,这样当node.js服务器重新启动时,您可以重新连接到数据库,而无需要求用户再次提供其凭据。这具有明显的安全隐患。
修复API的稳定性,以便不必经常重启node.js服务器。