2012-03-01 10 views
40

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

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

+0

Текущий пользователь? Это огромный риск для безопасности, когда это возможно в JavaScript. –

+3

Имя пользователя в контексте к чему? –

+1

Когда вы вошли в систему на своем компьютере, у вас есть имя пользователя. Это то, что я хочу получить. – Confiqure

ответ

62

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

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

+4

Как серверный скрипт будет получать дополнительную информацию о текущем пользователе клиентской ОС? –

+0

Вы можете запустить скрипт на localhost ...? Я сделал это предложение, прежде чем плакат сделал заметку о том, что он хочет имя пользователя клиентской ОС. –

+1

@DaggNabbit Совсем просто установить идентификатор пользователя на стороне сервера, используя SSPI или GSSAPI. –

5

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

10

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

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

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

+0

Браузер действительно имеет доступ к имени пользователя системы (или какой-либо системной информации, если на то пошло), однако браузер не предоставляет этого механизма JS. – Snuffleupagus

+0

@ user1090190 достаточно справедливо, отредактировано. –

27

Там нет полностью совместимы альтернативой 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 Сны предложил вы могли бы использовать AJAX для вызова метода на стороне сервера, который служит назад имя пользователя или визуализации HTML со скрытым входом со значением зарегистрированного пользователя, например для

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

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

Я буду голосовать за второй вариант по этому вопросу. – mutanic

+1

Я не совсем понял пример ASP.Net. Получает ли это имя пользователя, зарегистрированное в системе. Net, или имя пользователя локальной машины (вот о чем идет речь)? – igorsantos07

+0

Это зависит от того, какой режим аутентификации вы используете. Если вы используете параметр безопасности Windows User.Identity.Name вернет имя пользователя Windows – Greg

-1

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

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

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

+2

На самом деле это не добавляет никакой информации, которую http://stackoverflow.com/a/9518490/1089331 еще не охватывает –

Смежные вопросы