2013-07-16 41 views
1

我正在使用帶有FORM認證的Tomcat領域。在完成身份驗證之後,我想將對象保存在會話中,但無法弄清楚如何獲取會話。在Tomcat定製領域獲取會話對象

import org.apache.catalina.realm.RealmBase; 

public class MyRealm extends RealmBase { 

    @Override 
    public Principal authenticate(String username, String credentials) { 

     // get session here 
     return super.authenticate(username, credentials); 
    } 

的原因是我是用我自己的身份驗證之前,現在我需要切換到Tomcat的境界,基本上遷移登錄servlet代碼到我的自定義領域類有一個登錄的servlet。登錄成功後,我需要創建一個持有會話特定對象並將其放入當前會話中的對象。而且我需要用戶名&來創建它,所以authenticate()方法似乎只有這樣做。

回答

0

我總是這樣做的方式是在之後運行Filter認證已完成。如果HttpSession包含用戶令牌,那麼我什麼也不做,並調用鏈。如果HttpSession不包含該用戶令牌,我會盡我所需來設置會話,使用請求中提供的Principal(因爲已經發生認證)。

這聽起來不像是真的需要身份驗證(Realm)的一部分,所以將兩者分開。