Node.Js-获取当前的Windows用户名

时间:2015-01-12 04:02:22

标签: node.js active-directory

我有一个能够运行NodeJS代码的客户端应用程序。我试图获取客户端Windows用户名(客户端始终在Windows机器上运行)并将Windows用户名传递给服务器端。

如何使用Node.Js获取当前的Windows用户名?

我正在尝试在C#中为node.js找到与 WindowsIdentity.GetCurrent()。Name 类似的内容,或在CMD中找到 whoamI 命令。

6 个答案:

答案 0 :(得分:20)

自Node v6(2016-04)以来,您只需使用os.userInfo

var os = require('os');
os.userInfo().username

获取当前登录的用户名:

var path = require('path');
var userName = process.env['USERPROFILE'].split(path.sep)[2];
var loginId = path.join("domainName",userName);
console.log(loginId);

答案 1 :(得分:8)

据我所知,这不会像OP询问的那样向客户端用户提供Web应用程序,但是在本地运行Node应用程序时尝试获取登录用户的搜索结果中存在这个问题。

您可以在Windows中使用环境变量重现<domain>\<username>whoamI的{​​{1}}输出。

WindowsIdentity.GetCurrent()

如果您更愿意使用process.env.USERDOMAIN + '\\' + process.env.USERNAME

USERPROFILE

答案 2 :(得分:5)

虽然node具有内置操作系统函数osos.hostname()返回主机名,但您需要访问ASP.NET中客户端的主机名或者语言你的选择。您无法在节点中执行此操作,因为它在服务器端运行且与客户端的本地信息无关。

> require('os')
> os.hostname()

看看这个问题

Determine Client's Computer Name

在ASP.NET AKA客户端获取客户端主机名

System.Net.Dns.GetHostEntry( Request.ServerVariables["REMOTE_HOST"]).HostName;

懒惰的食物

string IP = Request.UserHostName;
string compName = CompNameHelper.DetermineCompName(IP);

code from compnamehelper:

public static string DetermineCompName(string IP)
    {
        IPAddress myIP = IPAddress.Parse(IP);
        IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);
        List<string> compName = GetIPHost.HostName.ToString().Split('.').ToList();
        return compName.First();
    }

MICROSOFT DOCUMENTATION

答案 3 :(得分:2)

有人创建了一个名为username的模块,可以为您完成所有艰苦的工作。

你像

一样使用它
var username = require('username');

console.log( username.sync() );

答案 4 :(得分:1)

我相信你说你有一个Asp.NET应用程序,并希望使用Node.js来确定当前用户的用户名,然后将其提交给你的Asp.NET应用程序。

我不是在Windows上开发的this question我认为这可以存储为环境变量。 process.env是环境变量的javascript map / dict,可能包含用户的用户名。

或者,您可以从用户主目录中解析它:

var path = require('path'); var username = path.sep(process.env['USERPROFILE'])[2];

我上面提到的问题意味着USERPROFILE解析为C:\Users\USERNAME\。然后我拆分路径并取第3个元素,即用户名。

同样,我没有Windows机器,无法确认这一点。希望这会让你走上正确的道路。

干杯。

答案 5 :(得分:-1)

从Node v6(2016-04)开始,您可以只使用os.userInfo

要获取当前登录的用户名:

var path = require('path');
var userName = process.env['USERPROFILE'].split(path.sep)[2];
var loginId = path.join("domainName",userName);
console.log(loginId);

一旦我们从上述代码中获得了用户名,我们将无法通过客户端访问此用户名api。此方法显示401 res