我有一个能够运行NodeJS代码的客户端应用程序。我试图获取客户端Windows用户名(客户端始终在Windows机器上运行)并将Windows用户名传递给服务器端。
如何使用Node.Js获取当前的Windows用户名?
我正在尝试在C#中为node.js找到与 WindowsIdentity.GetCurrent()。Name 类似的内容,或在CMD中找到 whoamI 命令。
答案 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具有内置操作系统函数os
而os.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();
}
答案 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