小编uNk*_*Nki的帖子

在 Windows 域网络中的 Linux 服务器上使用 NodeJS 进行单点登录

在我工作的公司里,我们有很多 Windows 20xx 服务器。我们使用活动目录域控制器进行身份验证。在 IE 中打开时,SharePoint 或 Dynamics CRM 2015(当然托管在 IIS 上)等程序不需要单独输入用户凭据。你打开它并登录 - 魔法 :) 我认为它只适用于 IIS?

我正在开发带有 NodeJS 后端的 AngularJS 应用程序。NodeJS 后端运行在 linux 机器上,AngularJS 应用程序由 Nginx 网络服务器托管在同一台机器上。一切都在同一个网络中。

有什么方法可以在我的 AngularJS 应用程序中对用户进行身份验证,而无需向他/她询问他/她的凭据吗?不需要 IE 的工作解决方案将是最好的情况。

非常感谢!

linux windows active-directory node.js

5
推荐指数
0
解决办法
327
查看次数

NodeJS mssql来自不同用户的多个连接

我正在开发一个express基于应用程序,它可以对不同的(不同的用户!)SQL Server 2008和2014数据库进行一些查询.它是不同的,因为每个用户属于不同的公司,每个公司都有自己的SQL Server.我的应用程序使用自己的SQL Server来管理公司及其SQL Server连接字符串(我的应用程序可以访问其数据库服务器).我正在使用该mssql模块.

我没有找到关于"我应该为每个用户会话使用一个SQL Server连接还是为每个用户请求使用一个连接"的最佳实践.

来自.NET世界我们有一个规则:"一个查询/功能 - 一个连接".

首先,应用程序必须查询自己的应用程序数据库,以获取用户公司数据库的SQL Server连接字符串.然后,用户可以从他们公司的SQL Server(在我的应用程序中)中检索一些数据 - 比如getAccounts().这些函数中的每一个(每个函数 - 不是该函数中的每个请求!)打开一个新连接并在查询完成后关闭它:

let connection = new mssql.Connection(conStr, (err) => {     
  request.query(queryString, (err, result) => {
    if (err) 
      throw new Error('...');        
    resolve(result)
    connection.close();
  });
})
Run Code Online (Sandbox Code Playgroud)

据我了解,如果100个用户每个请求打开和关闭连接(假设每个用户同时只有一个请求),或者如果100个用户有100个打开的连接(每个用户一个),则不会产生(负面)差异整个会议.乍一看似乎我的方法资源不足,因为只有在需要时才打开连接(即每个请求几秒钟).

我错过了什么吗?如果200个用户同时访问我的应用程序怎么办 - 我会以某种方式遇到麻烦吗?

提前致谢!

[编辑]

据我所理解,

let connection = new mssql.Connection(...)
Run Code Online (Sandbox Code Playgroud)

将创建一个新的连接池,当我使用类似的东西时,它将打开一个新的连接

connection.connect()
Run Code Online (Sandbox Code Playgroud)

并关闭所有活动连接:

connection.close()
Run Code Online (Sandbox Code Playgroud)

所以我猜测我的场景中的最佳实践是为new mssql.Connection(..)每个活动用户创建一个连接池(),将其保存在某种会话存储中,然后在会话的整个生命周期中重用它.

这是一个好方法吗?

我只想避免一件事:用户因为无法创建连接而收到错误.

sql-server node.js node-mssql

5
推荐指数
0
解决办法
1600
查看次数