web-dev-qa-db-ja.com

JavaScript-現在のユーザーの名前を取得する方法

HTMLドキュメントの一部としてJavaScriptで現在のユーザーの名前を取得する方法を疑問に思っていました。

Javaでは、System.getProperty("user.name");と入力してこれを実現します。 JavaScriptでこれに代わるものは何ですか?

49
Confiqure

JavaScriptは現在のHTMLドキュメントのコンテキストで実行されるため、現在のページにあるか、サーバー側スクリプトをAJAX呼び出しして取得しない限り、現在のユーザーに関する情報を判別できません。詳しくは。

JavaScriptはWindowsユーザー名を判別できません。

76
Surreal Dreams

JavaScriptにはfully compatible代替手段はありません。クライアント側のコードが認識できるようにする安全でないセキュリティ問題があるためです。ログインしているユーザー。

ただし、次のコードを使用すると、ログインしているユーザー名を取得できますが、ActiveXを使用するため、WindowsでのみInternet Explorer内でのみ機能します。また、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を使用して、ユーザー名を返すサーバー側メソッドを呼び出したり、たとえば、ログインしているユーザーの値を含む非表示の入力.

(ASP.NET MVC 3構文)

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

スクリプトがHTAなどのMicrosoft Windows上で実行されている場合、これを行うことができます。

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

そうでなければ、他の人が指摘したように、あなたは運が悪い。これは個人情報と見なされ、ブラウザからjavascriptエンジンに提供されません。

10
Dagg Nabbit

それは不可能だと思います。ブラウザがそのような個人情報にアクセスすると、大きなセキュリティリスクになります

6
Micho

IEでの作業:

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

...ただし、セキュリティ設定でActiveXコントロールをオンにする必要があります。

0
Kosmi