JavaScript - 如何获取当前用户的名称

Con*_*ure 53 html javascript username

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

在Java中,可以键入System.getProperty("user.name");以实现此目的.在JavaScript中有什么替代方案?

Sur*_*ams 79

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

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

  • 服务器端脚本如何获取有关客户端操作系统当前用户的更多信息? (10认同)
  • @DaggNabbit使用SSPI或GSSAPI在服务器端建立用户身份非常普遍。 (2认同)
  • @SimonBrangwin,从没听说过。为什么不添加一个答案,说明您将如何使用Web服务器上的其中一个获取客户端用户名之类的信息?我会很感兴趣地看到它如何工作。 (2认同)

Gre*_*reg 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>
Run Code Online (Sandbox Code Playgroud)

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

(ASP.NET MVC 3语法)

<input id="username" type="hidden" value="@User.Identity.Name" />
Run Code Online (Sandbox Code Playgroud)

  • 对于这件事,我将投票赞成第二种选择。 (2认同)
  • 我并没有完全理解ASP.Net示例。它是否获得了.Net系统中记录的用户名或本地计算机的用户名(这就是问题所在)? (2认同)

Dag*_*bit 11

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

var wshshell=new ActiveXObject("wscript.shell");
var username=wshshell.ExpandEnvironmentStrings("%username%");
Run Code Online (Sandbox Code Playgroud)

否则,正如其他人所指出的那样,你运​​气不好.这被认为是私人信息,并且浏览器不向javascript引擎提供.


小智 6

我认为不可能这样做.如果浏览器访问这种个人信息,那将是一个巨大的安全风险