他の同様の質問があることは知っていますが、答えのどれも私を助けませんでした。 サーバー上のIISでホストされているASP.NET Webアプリケーションがあります。 サーバーには、Windowsユーザー名を持つWindowsオペレーティングシステムがあります(ServerDomain/ServerUserName)。 私はMain.aspxページを持っています。asp.net Webアプリケーションを閲覧しているクライアントのウィンドウのユーザー名を取得します。
<a href="#" class="linkbutton" onclick="resendHandle(this)">Resend</a>
ページは、スクリプトタグを持っており、そこに私はJavaスクリプト機能があります:
function resendHandle(el) {
var clientWindowsName = ?
alert(clientWindowsName);
setCurrentUser(clientWindowsName));
submit();
}
今すぐクライアントを想定、またしてWindowsオペレーティングシステムを持っているページはリンクタグを持っていますWindowsユーザー名:ClientXDomain/ClientXUserNameが自分のサイトを参照しています。 Resendリンクをクリックすると、コントロールはresendHandle Java Script関数に、Main.aspx.csの(コードファイルの背後にある)Resendメソッドに "submit"した後に流れます。このメソッドでは、ClientXDomain/ClientXUserNameというクライアントウィンドウのユーザー名を取得します。明らかに、aspx.csはサーバーコードなので、このメソッドでユーザーIDをチェックすると、ServerDomain/ServerUserNameが取得されます。しかし、私が言及したように、私はこのメソッドでClientXDomain/ClientXUserNameを取得したい。 clientWindowsNameはsetCurrentUserの助けを借りてサーバーメソッドからアクセスされるため、clientWindowsName変数の値(resendHandle Javaスクリプト関数内)をサーバーサイズに転送することは問題ありません。 問題が
alert(clientWindowsName);
はいつものために私のためにNULLを返すということです。
var clientWindowsName = '<%=Page.User.Identity.Name%>';
およびその他のオプションについては、私が試しました。それはNT AUTHORITYIUSRに警告
var clientWindowsName = '<%=Request.LogonUserIdentity.Name.ToString()%>';
:だけのために 。
しかし、どのオプションも私に希望のユーザー名(ClientXDomain/ClientXUserName)を与えてくれません。
どうすれば入手できますか? Java Script関数内で値を取得しようとしていることに注意してください。おそらく、スクリプトタグの外で行うようにしてください。ありがとう!
EDIT 01:私のウェブの設定が含まれています
<authentication mode="Windows"/>
私の答えが役に立つと願っていますか?私たちはプロジェクトでこれを使用しており、Windows認証となりすましの両方を使用する必要があります –