セッションを使ったカスタム認証
- ユーザー名とパスワードはHTMLページ上のフォームを使う
- ユーザー管理はデータベースを利用する
- 送られてきたユーザー名とパスワードでデータベースを検索して認証する
- 認証が通った場合はセッションに記録する
- 保護されているページではセッションの有無をチェックする
- ログアウト機能を付ける
認証が行われているかどうかはセッションを使い、「login」データがあるかどうかをチェックする。
HttpSession session = request.getSession(false);
if (session == null){
/* まだ認証されていない */
session = request.getSession(true);
response.sendRedirect("/auth/Login");
}else{
Object loginCheck = session.getAttribute("login");
if (loginCheck == null){
/* まだ認証されていない */
response.sendRedirect("/auth/Login");
}
}
ログイン画面に飛ばした後で、本来アクセスしたかったURLへ移動させるため、どのサーブレットに対してアクセスしようとしていたのかを保存しておく必要がある。本来アクセスしようとしたURLを取得したらセッションの「target」に保存する。
String target = request.getRequestURL();
session.setAttribute("target", target);
URL |
http://localhost:8080/auth/CustomAuth1 |
アプリケーション配置場所 |
c:\servlet-sample\auth\ |
web.xmlファイル |
c:\servlet-sample\auth\WEB-INF\web.xml |
コンテキストファイル |
C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\auth.xml |
セッションを使ったカスタム認証(ログアウト処理)
ログアウトの処理は、セッションを無効にすればいいだけ。
HttpSession session = request.getSession(true);
session.invalidate();
response.sendRedirect("/auth/Login");
最終更新:2009年03月10日 23:56