JavaScript - Как получить имя текущего пользователя - PullRequest
49 голосов
/ 01 марта 2012

Мне было интересно, как получить имя текущего пользователя в JavaScript как часть HTML-документа.

В Java для этого нужно набрать System.getProperty("user.name");. Какая альтернатива этому в JavaScript?

Ответы [ 5 ]

76 голосов
/ 01 марта 2012

JavaScript выполняется в контексте текущего HTML-документа, поэтому он не сможет ничего определить о текущем пользователе, если он не находится на текущей странице или если вы не выполняете AJAX-вызовы серверного сценария для получения дополнительной информации.

JavaScript не сможет определить ваше имя пользователя Windows.

31 голосов
/ 01 марта 2012

Не существует полностью совместимой альтернативы в JavaScript, поскольку она связана с небезопасной проблемой безопасности, позволяющей клиентскому коду узнавать о вошедшем в систему пользователе.

* 1006Тем не менее, следующий код позволит вам получить зарегистрированное имя пользователя, но он будет работать только в 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" />
10 голосов
/ 01 марта 2012

Если скрипт выполняется в Microsoft Windows в HTA или аналогичном режиме, вы можете сделать это:

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

В противном случае, как уже отмечали другие, вам не повезло. Это считается конфиденциальной информацией и не предоставляется браузером движку javascript.

6 голосов
/ 01 марта 2012

Я думаю, что это невозможно сделать. Было бы огромным риском для безопасности, если бы браузер имел доступ к такой личной информации

0 голосов
/ 07 июля 2016

Работа для меня в IE:

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

... но ActiveXэлементы управления должны быть включены в настройках безопасности.

...