- PR -

フォーム認証でのログアウト

1
投稿者投稿内容
おかじー
会議室デビュー日: 2003/02/21
投稿数: 10
投稿日時: 2004-03-05 20:25
Webアプリケーションの認証機構である、フォーム認証をTomcatで行っています。

さて、「ログアウト」って皆さんやりません?
単純には、ログアウト→ログインと画面推移したいのです。
しかし、ログアウト後のログインでsubmit後、「HTTP Status 400 - フォームログインページへの無効な直接参照です」のエラーが発生します。

フォーム認証の場合って、認証した情報って、HttpServletRequestから取得できますね。
って事はクライアントから送られてくる。(クッキー?)
これを再使用(?)しようとしている為なのかな?

ログアウトでの処理で、この認証情報をクリア出来れば良いのでしょうが(クッキーを破棄?)、方法がわかりません。

そもそも、ログアウト→ログインのような画面推移は、どのうように実現すれば良いのでしょう?


環境
Windows2000Pro
Tomcat 4.1.24
J2SDK 1.4.2_03
Struts 1.1
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-03-07 13:34
ちなみにログアウト処理はどのように実装されているのですか?
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-03-08 07:01
HttpSession#invalidate()を利用しましょう。
おかじー
会議室デビュー日: 2003/02/21
投稿数: 10
投稿日時: 2004-03-08 10:14
引用:
ちなみにログアウト処理はどのように実装されているのですか?
HttpSession#invalidate()を利用しましょう。



ログアウト処理では、Anthyhimeさんがおっしゃるように、
HttpSession#invalidate()
しています。
その後、メニュー画面(具体的には、menu.do・・・Struts使用なので)へ、Forwardしています。
この、menu.doには、security-constraintでsecurityをかけています。
ログアウト→ログイン→メニューと遷移して欲しいのですが、
ログアウト→メニューと遷移しているようです。

フォーム認証での認証情報は、セッションに格納されいないのではないかと思うのですが。
ログアウト後も、HttpServletRequest.getRemoteUser()で、値は取得できてしまいますし・・・。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-03-08 10:42
フォーム認証ではなく基本認証ですが、同じように
HttpSession#invalidate()
してもログインユーザ情報が残ってしまう現象を確認してます。
(Tomcat4.0.6 & IE5.5、6.0ですが)

新たにIEを起動すると、ログインユーザ情報は残らないので、恐らく、
ブラウザ側にクッキーとして残ってるんじゃないかと推測してますが、
あまり深く調べたことは無いです。

# 一つのブラウザウィンドウで、複数のユーザアカウントを使い分けるという
# 用途が余り無かったので、「仕様です」で逃げちゃいました

あまりお役に立てませんが・・・。
おかじー
会議室デビュー日: 2003/02/21
投稿数: 10
投稿日時: 2004-03-08 16:25
自己レスです。

forwardがまずかったようです。
rediresctでうまくいきました。

返答いただいた皆様、ありがとうございましたm(__)m
1

スキルアップ/キャリアアップ(JOB@IT)