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控件需要在安全设置中。