- - PR -
システムログインユーザの取得
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-12-06 17:31
WebブラウザとJSPを用いて画面上にローカルのユーザ名を取得しようとしているのですが、
"SYSTEM"としか表示されず、困っているのでお力添えをいただきたく。 構成そのものは、サーバサイドにして、 Java関連をサーバに置き、クライアントからWebブラウザを介してアクセスしています。 ここで、ブラウザでJSPファイルにアクセスした際に、クライアントの起動時に入力した ユーザ名を取得しようとしているのですがうまくいかず、悩んでおります。 ローカルのみで行ってみた場合は、getProperty("user.name")で取れたので、 サーバサイドでもいけるかと思ったのですが。 ------------------------------------------------------ <%@ page contentType="text/html; charset=Shift_JIS"%> <%@ page import ="java.sql.*" %> <%@ page import ="java.util.*" %> <%@ page import ="java.io.*" %> <HTML> <HEAD> ・ ・ ・ // String UserName = System.getProperty("user.name").toString(); String UserName = System.getProperty("user.name"); ・ ・ ・ <DIV align="center"> <Form name="delSelect"> <TABLE border="1" bgcolor="#ffffff"> <TBODY> <TR bgcolor="#f3b352"> <TD align="center" nowrap><B>ユーザ名</B></TD> </TR> <TR bgcolor="#f3b352"> <TD align="center" nowrap><B><%= UserName %></B></TD> </TR> ・ ・ ・ といった感じになっています。 HTMLに尾ひれ背びれがついた程度なのですが、ここがどうしてもうまくいかず、 逆にファイルの読み書きなどがすんなりいってしまったので・・・。 PCの構成自体は、サーバにWindowsNT4.0(SP6)、クライアントにWindows2000(SP2)を用いています。 また、Javaの実行環境にはtomcat5.0 + Java 2 SDK 1.4.2を用いています。 | ||||||||
|
投稿日時: 2004-12-06 17:46
下記のようにユーザー情報を取得してみてください。 私も大体この構成でユーザーのLOGIN番号を 取得しています。 String user_name; user_name = request.getHeader("user.name"); 以上 | ||||||||
|
投稿日時: 2004-12-06 17:56
windowsのログインのユーザ名の事ですか? getProperty("user.name")の事を言っているので多分そのことだと思いますが。
getProperty("user.name")はVMが実行されているユーザ名を返します。 クライアントではVMが実行されていませんよね? ですからSYSTEMアカウントで起動されていて、"SYSTEM"が返ってくるのではないでしょうか。 サーブレットでクライアントの情報を取得したい場合は、 クライアント側から明示的に渡す必要があります。 しかし、実行ユーザ名はブラウザ(IE)でActiveXなしに取得することはできません。 | ||||||||
|
投稿日時: 2004-12-06 17:58
striverさん>
早速の回答ありがとうございます。 こちらで引用して試してみたところ、結果の表示は"null"となり、 ユーザ名は取得できませんでした。 何か別にすることがあるのかもしれませんが、それもちょっと見当がつかないです(汗) nullとなっていることから、ヘッダ(?)にユーザ名が入っていないのだろうとは思いますが。 | ||||||||
|
投稿日時: 2004-12-06 18:03
あれ?リクエストヘッダにユーザ名が含まれてましたっけ? | ||||||||
|
投稿日時: 2004-12-06 18:12
かつのりさん>
返答いただきありがとうございます。 > windowsのログインのユーザ名の事ですか? > getProperty("user.name")の事を言っているので多分そのことだと思いますが。 その通りです。 > getProperty("user.name")はVMが実行されているユーザ名を返します。 > クライアントではVMが実行されていませんよね? > ですからSYSTEMアカウントで起動されていて、"SYSTEM"が返ってくるのではないでしょうか。 VMというのがよくわかりませんが、たしかに単純に、JavaのSDKとtomcatをインストールしただけです。 > サーブレットでクライアントの情報を取得したい場合は、 > クライアント側から明示的に渡す必要があります。 > しかし、実行ユーザ名はブラウザ(IE)でActiveXなしに取得することはできません。 これは、ActiveXをJavaで利用できるようにしないと取得は不可能ということでしょうか? で、ActiveXの機能でユーザ名をJavaのVMとやらに渡して、JavaはVMから取得するというような認識でよいのでしょうか? | ||||||||
|
投稿日時: 2004-12-06 18:15
ちょっと確認ですけど、ユーザーがJSPファイルにアクセスする
時にDIALOGボックスが表示されて、そこでユーザー名と PASSWORDとかなどを記入している仕組みでしょうか? もし上記のようだとしたら、間違いなく、うまくいくと思います。 String user_name; user_name = request.getHeader("user.name"); 因みに、request.getHeader("")に入れるものは ユーザーのLOGIN PROPERTYです。 ”user.name”のほうはちょっと怪しいかも。 [ メッセージ編集済み 編集者: striver 編集日時 2004-12-06 18:16 ] | ||||||||
|
投稿日時: 2004-12-06 18:34
striverさん>
> ちょっと確認ですけど、ユーザーがJSPファイルにアクセスする > 時にDIALOGボックスが表示されて、そこでユーザー名と > PASSWORDとかなどを記入している仕組みでしょうか? いえ、そういった作りではないです。 WindowsのNT系であれば、自動、または手動で、 起動時に、ユーザ名とパスワードを入力しますが、 その情報を取得したいと考えています。 Javaプログラム単体の情報ではなく、システムの環境変数(?)に該当する部分からの取得・・・になるでしょうか。 最初にDOSプロンプトレベルで単純に System.getPropertyとして、ユーザ名を取得し、 それをprintlnで出力すると、ログインユーザ名が取得できるのですが、 それを、サーバサイドのプログラムで行いたいといったところです。 文章が下手な上、情報不足で申し訳ありません。 |