Подтвердить что ты не робот

JavaScript - Как получить имя текущего пользователя

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Как полагают Surreal Dreams, вы можете использовать AJAX для вызова метода на стороне сервера, который возвращает имя пользователя, или отображает HTML со скрытым вводом со значением зарегистрированного пользователя, например,

(синтаксис ASP.NET MVC 3)

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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

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