2017-04-04 11 views
0

在控制器的後端,我想登錄一個用戶。然後,我想呈現一個視圖render(view: '/my-view'),用戶將在其中進行身份驗證。驗證控制器中的用戶並將會話發送到前端

情景

  1. 用戶被給予一個鏈路
  2. 他去這個鏈接
  3. 後端重定向鏈接到一個控制器
  4. 控制器爲用戶創建一個臨時賬號與他進行認證。
  5. 控制器呈現視圖和????以某種方式將會話發送到前端?

我怎樣才能會話發送到前端?

+0

而不是說我會提供你爲什麼不把賞金的queston :) – dsharew

+0

賞金按鈕將在2天內上市,而不是現在。哎呀。 :D – zatziky

+0

@halfer,你好像是個熱心的編輯。怎麼樣幫助我得到正確的答案。 ';'' – zatziky

回答

1

定義前端?

後端重定向鏈接的控制器。控制器爲用戶創建一個 臨時帳戶並對其進行驗證。

這是我正在做這插座不認證,從後端訪問該用戶的HTTP會話,並在那裏,他們在已經登錄投入。然後我送一個socket觸發回前端HTML說一切OK 在這一點上從GSP插座獲取響應和說AHA重定向到/site/hello

控制器呈現視圖和????以某種方式將會話發送到前端?

本/網站/你好現在檢查特定的會話和良好的用戶現在也記錄在太..會議細節由後端在GSP時設置的用戶身份驗證,而不是前端會話

可以做

<g:set var="something" scope="session"/> 

但我認爲我所描述的是你需要做的

,如果你需要幫助的用戶會話的細節它都相當容易,我不把它出手

連接到插座時

但普惠制我送'${session.id}'然後我擡頭綁定返回用戶.....

還要注意---有抓這裏,當用戶沒有通過驗證,他們有主會話,當他們通過春季安全進行身份驗證時,他們實際上會獲得新的會話ID。這是由於安全問題,但我已經得到解決session.username,我登錄時設置,現在匹配'$ {params.encryptedUsername}'解密在後端..

啊,它回滾..有一個併發的散列表,其中包含username,session並從那當我得到Decrypted.username我得到hashMap其中值是用戶http會話,我戳和做的事情...

我可以給你我的代碼,但那麼這是上述大量的工作是你如何去了解它以某種方式的步驟

因此,要回答你的問題,這是在Grails的3: 在application.groovy

grails.plugin.springsecurity.useSecurityEventListener = true 

添加CustomSecurityEventListener.groovy啓用春季安全會話監聽器班級到您的應用程序,刪除loginCac heAttempt,除非你想使用它,請參考該demo中的build.gradle和相關的服務等。

這就要求在同一文件夾中提供SessionListener當我註冊一個用戶增加了用戶與會話ID同步映射在SessionListener

現在在我的WebSockets的頂部聲明會話:

String sessionId = userSession.userProperties.get("sessionId") as String 
       def userHttpsession = SessionListener.sessions.find{it.key==sessionId}?.value 
userHttpsession.username = username 
userHttpsession.password = password 

這仍是預認證和主會話

我發送觸發告訴插座刷新頁面GSP到另一個window.location的。 HREF

在該位置控制器動作我驗證會話的詳細信息和無效的會話詳細

registerService.authenticateUser(user, session.password) 

做事的這種方式出現無併發症做工精細,有被髮送作爲初始部分加密的用戶確保session.user匹配加密用戶(用於登錄用戶)

+0

Vahid謝謝你試圖幫助我。 :)雖然我不太瞭解。目前,我最大的問題是如何創建一個Spring Security會話.... – zatziky

+0

不需要你需要實現監聽器來同時處理你的spring安全性,但是因爲你需要綁定到HttpSessionListener中,所以它有點棘手,無法調出確切的運作。稍後會提供一些代碼或步驟。看看這裏https://github.com/vahidhedayati/grails-bean-validation-examples/tree/master/src/main/groovy/security它有點覆蓋它,但實際上併發hashmap等是一個新的概念後點擊會話續訂問題前/後認證 – Vahid

+0

嘗試遵循上面這是所有相當複雜的東西,你需要從類似的東西開始,提出問題,而不是期望得到整個代碼 – Vahid

0

看起來程序化登錄似乎也照顧了會話。

springSecurityService.reauthenticate(email, password)

相關問題