如何在 JavaScript 中获取当前 Windows 用户的名称

IT技术 javascript html windows
2021-01-14 15:16:33

我想知道如何在 JavaScript 中获取当前用户的姓名作为 HTML 文档的一部分。

在 Java 中,可以通过键入System.getProperty("user.name");来实现这一点。JavaScript 中的替代方法是什么?

5个回答

JavaScript 在当前 HTML 文档的上下文中运行,因此它无法确定有关当前用户的任何信息,除非它位于当前页面中,或者您对服务器端脚本执行 AJAX 调用以获取更多信息。

JavaScript 将无法确定您的 Windows 用户名。

@SimonBrangwin,从未听说过这些。为什么不添加一个答案,显示您将如何使用 Web 服务器上的其中一个来获取客户端用户名等信息?我很想知道这将如何运作。
2021-03-22 15:16:33
我们现在可以获取当前用户名吗??jquery 有什么改进吗??@超现实梦
2021-03-29 15:16:33
您可以在本地主机上运行脚本...?我在发帖人注明他想要客户端操作系统用户名之前就提出了这个建议。
2021-03-31 15:16:33
服务器端脚本如何获取有关客户端操作系统当前用户的更多信息?
2021-04-06 15:16:33
@DaggNabbit 使用 SSPI 或 GS​​SAPI 在服务器端建立用户身份是很常见的。
2021-04-09 15:16:33

JavaScript 中没有完全兼容的替代方案,因为它存在不安全的安全问题,允许客户端代码了解登录用户。

也就是说,以下代码将允许您获取登录的用户名,但它只能在 Windows 上运行,并且只能在 Internet Explorer 中运行,因为它使用了 ActiveX。此外,Internet Explorer 很可能会显示一个弹出窗口,提醒您与使用此代码相关的潜在安全问题,这对可用性没有任何帮助。

<!doctype html>
<html>
<head>
    <title>Windows Username</title>
</head>
<body>
<script type="text/javascript">
    var WinNetwork = new ActiveXObject("WScript.Network");
    alert(WinNetwork.UserName); 
</script>
</body>
</html>

正如Surreal Dreams建议的那样,您可以使用 AJAX 调用服务于用户名的服务器端方法,或者使用具有登录用户值的隐藏输入呈现 HTML,例如

(ASP.NET MVC 3 语法)

<input id="username" type="hidden" value="@User.Identity.Name" />
这取决于您使用的身份验证模式。如果您使用 Windows 安全选项 User.Identity.Name 将返回 Windows 用户名
2021-03-13 15:16:33
我并没有完全理解 ASP.Net 示例。它是获取登录在 .Net 系统中的用户名还是本地机器用户名(这就是问题所在)?
2021-04-10 15:16:33

如果脚本在 Microsoft Windows 上以 HTA 或类似方式运行,您可以执行以下操作:

var wshshell=new ActiveXObject("wscript.shell");
var username=wshshell.ExpandEnvironmentStrings("%username%");

否则,正如其他人所指出的那样,你就不走运了。这被认为是私人信息,浏览器不会将其提供给 javascript 引擎。

浏览器确实可以访问系统的用户名(或与此相关的任何系统信息)——但是,浏览器不会将其暴露给 JS 引擎。
2021-03-26 15:16:33

我认为这是不可能的。如果浏览器访问此类个人信息,将带来巨大的安全风险

在 IE 上为我工作:

<script type="text/javascript">
  var WinNetwork = new ActiveXObject("WScript.Network");
  document.write(WinNetwork.UserName);
</script>

...但 ActiveX 控件需要在安全设置中打开。

这并没有真正添加任何stackoverflow.com/a/9518490/1089331尚未涵盖的信息
2021-04-10 15:16:33