wake-up-neo.com

JavaScript - Wie erhalte ich den Namen des aktuellen Benutzers?

Ich fragte mich, wie ich den Namen des aktuellen Benutzers in JavaScript als Teil eines HTML-Dokuments erhalten würde.

In Java würde man System.getProperty("user.name"); eingeben, um dies zu erreichen. Was ist die Alternative dazu in JavaScript?

49
Confiqure

JavaScript wird im Kontext des aktuellen HTML-Dokuments ausgeführt, daher kann es nichts über einen aktuellen Benutzer feststellen, es sei denn, es befindet sich auf der aktuellen Seite oder Sie rufen AJAX eine Serverseite auf Skript, um weitere Informationen zu erhalten.

JavaScript kann Ihren Windows-Benutzernamen nicht ermitteln.

76
Surreal Dreams

In JavaScript gibt es keine vollständig kompatible Alternative , da diese ein unsicheres Sicherheitsproblem aufweist, damit clientseitiger Code den angemeldeten Benutzer erkennen kann.

Mit dem folgenden Code können Sie zwar den angemeldeten Benutzernamen abrufen, er funktioniert jedoch nur unter Windows und nur im Internet Explorer, da ActiveX verwendet wird. Außerdem wird in Internet Explorer höchstwahrscheinlich ein Popup-Fenster angezeigt, das Sie auf potenzielle Sicherheitsprobleme im Zusammenhang mit der Verwendung dieses Codes hinweist, was die Benutzerfreundlichkeit nicht gerade verbessert.

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

Wie Surreal Dreams angedeutet hat, können Sie AJAX) verwenden, um eine serverseitige Methode aufzurufen, die den Benutzernamen zurückliefert, oder den HTML-Code mit einer versteckten Eingabe rendern mit einem Wert des angemeldeten Benutzers, z.

(ASP.NET MVC 3-Syntax)

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

Wenn das Skript unter Microsoft Windows in einer HTA oder ähnlichem ausgeführt wird, können Sie dies tun:

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

Ansonsten haben Sie, wie andere bereits betont haben, Pech. Dies gilt als private Information und wird vom Browser nicht an die Javascript-Engine weitergegeben.

10
Dagg Nabbit

Ich denke, das ist nicht möglich. Es wäre ein großes Sicherheitsrisiko, wenn ein Browser auf diese Art von persönlichen Informationen zugreifen würde

6
Micho

Arbeiten für mich am IE:

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

... aber ActiveX-Steuerelemente müssen in den Sicherheitseinstellungen aktiviert sein.

0
Kosmi