[Seasar-user:4964] [S2JSF] セッション管理

Hiroyuki Onagi [E-MAIL ADDRESS DELETED]
2006年 10月 31日 (火) 20:38:37 JST


小名木と申します。

S2JSFで Web 画面を作成しています。
ログイン認証でセッション管理を行った場合の動作について
教えて頂きたい事が御座います。

■質問1

  セッションタイムアウトが発生すると、Tomcat の仕様では、

     request.getSession(false);
 
  は null を返すという仕様を確認しました。
  
  J2SF では セッションタイムアウトすると 自動的に新しい
  セッションを取得しているようですが、
  これは仕様でしょうか?


■質問2

  セッションタイムアウトになったか?をアクションから知る方法は
  ありますでしょうか?


■質問3

  セッションタイムアウトになった場合、
  	ユーザー名
  	パスワード
  の入力を促す画面を再度ポップアップさせる方法はありますか?

  ※ Tomcat の仕様かと思われますが、こちらに質問するのは外
    れているかも知れません。その場合、ポインタだけでも教えて
    頂けると助かります。


■動作確認環境 及び手順

  OS: Windows XP SP2 
  Tomcat 5.0.28
  J2JSF 1.1.0

1.Basic 認証を利用してセッション管理をしています。

    タイムアウト時間は1分に設定しています。
    web.xml には以下の通り設定しています。

    <security-constraint>
      <web-resource-collection>
        <web-resource-name>
          Authentication of BasicAuth
        </web-resource-name>
        <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
        <role-name>*</role-name>
      </auth-constraint>
    </security-constraint>

    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>UserDatabaseRealm</realm-name>
    </login-config>


2.S2JSF のアクションクラスへ HttpServletRequest の setter
    を置き、session の状態を確認しました。

	HttpSession session = request.getSession(false);
	// セッションが存在する場合
	if (session!=null) {
		System.err.println("sessionID:"+session.getId());
	}


3.このwebページでセッションタイムアウト時間 1分を経過すると、
    次のように、セッション ID が再取得されました。

sessionID:D631C92D8B04AB02A5894E298547506E
  :
1分経過
  :
sessionID:5ECA9D68F2A0218E11D3D9EFAB3ECF5B


以上、よろしくお願い致します。



Seasar-user メーリングリストの案内