2017-11-29 7 views
0

現在、Webプロジェクトがセットアップされており、フォームベースのJDBC領域認証がTomcatサーバーに設定されています。ユーザーがログインしたときにリクエストを追加する

HttpServletRequestクラスを使用して、データベースにログインするユーザーのIPアドレスを格納します。

ここで(どのアクションの後に)このリクエスト機能をJSPページに追加しますか?

私はJSP/Servlet、Tomcat、およびMySQLを使用しています。

ありがとうございます!

答えて

0

サーブレットフィルタを使用できます。サーブレットフィルタを使用して、着信HTTPサーブレット要求を傍受し、要求に応じて何かを実行したり、エントリをログに記録することができます。

Tomcatには、デフォルトですべてのHTTP要求、ステータス、IP、およびユーザー名が含まれているアクセスログもあります。ここに例があります。

192.168.0.47 - - [27/Nov/2017:07:18:07 -0600] "GET /example/module?wsdl HTTP/1.1" 200 3122 
192.168.0.47 - - [27/Nov/2017:07:18:07 -0600] "POST /otherapp/service HTTP/1.1" 200 251 
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:08 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 - 
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:18 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 - 
fe80:0:0:0:fc36:e3bb:5bc4:abce%14 - asm-admin [27/Nov/2017:07:18:28 -0600] "POST /otherapp/HEARTBEAT/?v-uiId=0 HTTP/1.1" 200 - 
+0

このログはどこにありますか?また、どのリクエストがログインリクエストであるかをどのようにして知ることができますか、それを自分のデータベースに投稿するためにどのように使用しますか? – NotAMonkey24

+0

ログインページに移動したため、ログイン要求であることがわかります。コードがHTTP 401であるため、失敗したログイン要求であることがわかります。authNは成功しましたが、コードが403であるため、ユーザーに適切な権限がないことがわかります。このログファイルはTOMCAT_HOME/logsの内側にあります。詳細はこちらをご覧ください:http://www.techstacks.com/howto/configure-access-logging-in-tomcat.html –

+0

これは、ありがとうございます!現在、私はgetRemoteAddrから0.0.0.0.0.1を取得していますが、それはローカルホストには正しいのですか? – NotAMonkey24

0

ログインに成功すると、リクエストからユーザー名とIPアドレスを取得し、さらに処理できます。私は、挑戦は、ちょうどログイン後すぐにそれをつかむことです、なぜならtomcatsフォームベースのログインはかなり透明ですから。 セッションオブジェクトにユーザー名を保存し、セッションに値がない場合はデータのみを保存して解決しました。おそらく、セッションが終了する可能性があることを考慮する必要があります。

+0

セッションデータを格納するための「トリガー」は何ですか? – NotAMonkey24

+0

これは、sessionobject 'user'が設定されていない場合はnullと値を返した場合に発生します。何かのように: if(session.getAttribute( "user.name")== null){ saveEntry(); session.setAttribute( "user.name"、request.getRemoteUser()); } –

関連する問題