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

时间:2012-03-01 14:36:29

标签: javascript html username

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

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

5 个答案:

答案 0 :(得分:75)

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

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

答案 1 :(得分:31)

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>

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

(ASP.NET MVC 3语法)

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

答案 2 :(得分:10)

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

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

否则,正如其他人所指出的那样,你运​​气不好。这被视为私人信息,浏览器不会将其提供给javascript引擎。

答案 3 :(得分:6)

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

答案 4 :(得分:-1)

在IE上为我工作:

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

...但是在安全设置中需要启用ActiveX控件。