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

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

在Java中,可以inputSystem.getProperty("user.name"); 实现这一点。 在JavaScript中有什么替代方法?

JavaScript运行在当前HTML文档的上下文中,因此它不能确定当前用户的任何内容,除非它在当前页面中,或者您可以通过AJAX调用服务器端脚本来获取更多信息。

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

在JavaScript中没有完全兼容的替代scheme,因为它具有不安全的安全问题,允许客户端代码知道已login的用户。

也就是说,下面的代码将允许您获取login的用户名,但是它只能在Windows上工作,并且只能在Internet Explorer中使用,因为它使用了ActiveX。 此外,Internet Explorer将很可能会显示一个popup窗口,提醒您与使用此代码相关的潜在安全问题,这不会完全有助于可用性。

 <!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> 

由于超现实主义的梦想build议你可以使用AJAX来调用一个服务器端的方法来回送用户名,或者使用一个隐藏的input来呈现带有login用户值的HTML,例如

(ASP.NET MVC 3语法)

 <input id="username" type="hidden" value="@User.Identity.Name" /> 

如果脚本在HTA或类似的Microsoft Windows上运行,则可以这样做:

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

否则,就像别人指出的那样,你倒霉了。 这被认为是私人信息,而不是由浏览器提供给JavaScript引擎。

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

在IE上为我工作:

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

…但是ActiveX控件需要在安全设置中。