2013-07-22 57 views
0

我正在創建一個Web項目,我必須使用自己的身份驗證實現(是的,我完全意識到不推薦這個事實,但我必須這樣做......)。現在,我想爲身份驗證成功的登錄用戶創建一個新的HttpSession,但是我找不到任何源代碼,在沒有後端的Spring Security Plugin的情況下完成此任務...創建新的HttpSession爲用戶?Grails 2.2.3 - 如何創建一個新的HTTP會話?

所以,我想實現的是以下情形

登錄頁面(用戶與會話ID已經是一個會話) - >在用戶登錄 - >檢查登錄憑據並創建一個新的會話如果登錄成功,新的會話ID - >使用登錄用戶的新會話。

我希望有人能幫助我,我真的需要它;)

+0

不知道你是否真的想要這個或沒有,但你可以在會話中設置userId爲:會議[「[ id「] = 並且可以執行檢查o在過濾器上的會話,並排除登錄控制器,或只是身份驗證操作(如果您有這些名稱爲登錄 - >授權操作) –

+0

@SaurabhDixit感謝您的想法,但我認爲我不能使用它,因爲我創建每個會話都有一個用戶對象,並在註銷時銷燬會話,但我希望能夠讓用戶啓動另一個應用程序並使用不同的會話,以便爲當時啓動的應用程序創建一個新用戶......希望這聽起來像不是太奇怪,但它基本上是我嘗試實現的;) – herom

回答

3

在你的控制器,你不能這樣做

// get rid of any existing session 
session().invalidate() 
// create a new session 
request.session(true) 

(我沒有檢查的語法這.....我通常在Java工作,所以它可能是錯誤的,但你得到的漂移)

+0

我會試一試 - 謝謝! – herom

+0

它的作品 - 非常感謝!現在只剩下一個問題了:我爲每個用戶創建一個會話範圍服務,但是如果我在注入的'session'對象或'request.session'對象上調用'.invalidate',看起來我的服務也被破壞了...似乎我必須將這些東西從我的服務類中移出到另一個會話範圍的bean或類似的東西... – herom

+0

我不認爲你應該將注入的會話和request.session想成是不同的事情。上面的代碼是破壞一個會話並創建一個新會話。從你對上述@SaurabhDixi的評論的迴應中,我認爲你可能試圖以不應該使用該會話的方式來使用該會話。通常不會爲同一用戶同時運行兩個會話。 – DaveH

相關問題