74 Stimmen

Wie man den Namen des aktuellen Windows-Benutzers in JavaScript bekommt

Ich habe mich gefragt, 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?

0 Stimmen

Aktueller Benutzer? Das ist ein enormes Sicherheitsrisiko, wenn dies in JavaScript möglich ist.

3 Stimmen

Benutzername im Zusammenhang mit was?

3 Stimmen

Wenn Sie an Ihrem Computer angemeldet sind, haben Sie einen Benutzernamen. Das ist das, was ich bekommen möchte.

99voto

Surreal Dreams Punkte 25265

JavaScript wird im Kontext des aktuellen HTML-Dokuments ausgeführt, daher wird es nicht in der Lage sein, etwas über einen aktuellen Benutzer zu bestimmen, es sei denn, es befindet sich auf der aktuellen Seite oder Sie führen AJAX-Aufrufe zu einem serverseitigen Skript aus, um weitere Informationen zu erhalten.

JavaScript wird nicht in der Lage sein, deinen Windows-Benutzernamen zu bestimmen.

27 Stimmen

Wie erhält ein serverseitiges Skript weitere Informationen über den aktuellen Benutzer des Client-Betriebssystems?

1 Stimmen

Sie könnten ein Skript auf localhost ausführen...? Ich habe diesen Vorschlag gemacht, bevor der Poster den Hinweis gab, dass er den Benutzernamen des Client-Betriebssystems haben möchte.

4 Stimmen

@DaggNabbit Es ist ziemlich üblich, die Identität des Benutzers auf der Serverseite zu etablieren, wobei SSPI oder GSSAPI verwendet werden.

40voto

Greg Punkte 30990

Es gibt keine vollständig kompatible Alternative in JavaScript, da es ein unsicheres Sicherheitsproblem darstellt, clientseitigen Code darüber zu informieren, wer angemeldet ist.

Trotzdem würde folgender Code es ermöglichen, den angemeldeten Benutzernamen zu erhalten, allerdings funktioniert er nur unter Windows und nur im Internet Explorer, da er ActiveX verwendet. Außerdem wird der Internet Explorer höchstwahrscheinlich einen Warnhinweis anzeigen, der auf die potenziellen Sicherheitsprobleme hinweist, die mit der Verwendung dieses Codes verbunden sind, was die Benutzerfreundlichkeit nicht gerade verbessert.

    Windows-Benutzername

    var WinNetwork = new ActiveXObject("WScript.Network");
    alert(WinNetwork.UserName); 

Wie Surreal Dreams vorgeschlagen hat, könnten Sie AJAX verwenden, um eine serverseitige Methode aufzurufen, die den Benutzernamen zurückgibt, oder den HTML-Code mit einem versteckten Eingabefeld rendern, das den angemeldeten Benutzer enthält, z. B.

(ASP.NET MVC 3 Syntax)

2 Stimmen

Ich habe das ASP.Net-Beispiel nicht ganz verstanden. Wird der Benutzername abgerufen, der im .Net-System angemeldet ist, oder der Benutzername der lokalen Maschine (das ist die Frage)?

0 Stimmen

Es hängt davon ab, welchen Authentifizierungsmodus Sie verwenden. Wenn Sie die Windows-Sicherheitsoption verwenden, gibt User.Identity.Name den Windows-Benutzernamen zurück.

14voto

Dagg Nabbit Punkte 72150

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, wie von anderen bereits erwähnt, haben Sie Pech gehabt. Diese Informationen gelten als privat und werden vom Browser nicht an den JavaScript-Motor weitergegeben.

1 Stimmen

Der Browser hat tatsächlich Zugriff auf den Benutzernamen des Systems (oder andere Systeminformationen) - der Browser gibt dies jedoch nicht an den JS-Motor weiter.

8voto

Ich glaube, dass es nicht möglich ist, das zu tun. Es wäre ein enormes Sicherheitsrisiko, wenn ein Browser auf solche persönlichen Informationen zugreifen würde

-3voto

Kosmi Punkte 21

Funktioniert für mich im IE:

  var WinNetwork = new ActiveXObject("WScript.Network");
  document.write(WinNetwork.UserName);

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

3 Stimmen

Das fügt keine Informationen hinzu, die stackoverflow.com/a/9518490/1089331 nicht bereits abdeckt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X