2016-12-27 101 views
0

我想在網頁上登錄用戶,但不使用用戶名和密碼,而是使用令牌。 所以我有兩個表春季安全用令牌登錄到網絡

User: 
id 
username 
password 

Token: 
id 
user_id 
token 

所以現在,如果用戶在瀏覽器頁面domain.com/token/{token開} 那麼應該由令牌和負載爲用戶角色,prives找到USER_ID等

我在網上搜索,但只找到JWT(Rest API)的解決方案。

感謝意見

UPDATE 系統將會爲用戶令牌,將增加進入Token表。

例:令牌是:token3333用於與ID 3用戶)

當用戶進入頁面domain.com/token/token3333然後自動將被記錄爲ID爲3的用戶在沒有用戶名和密碼進行填充。

+0

https://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii這是一個基於令牌的授權的春季教程。 – Reek

+0

@Reek我幾乎可以肯定,教程不是我問的。有'X-Auth-Token'頭帶令牌請求發送,所以這不是我需要的 – Robert

回答

0

彈簧安全性很容易擴展,但您必須手動執行

我真的不明白爲什麼你的登錄系統與一個單一的令牌比古典的用戶名+密碼登錄頁面更好,恕我直言,你應該考慮三次真正的原因。

一個簡單的方法是在這裏使用一個spring-mvc控制器來處理URL domain.com/token/{token},在數據庫中查找用戶標識並直接構建完全身份驗證的身份驗證令牌。然後你只需要放入從SecurityContextHolder類的靜態方法獲得的SecurityContext。

如果您更喜歡在不依賴spring-mvc的情況下更好地集成到Spring安全中,則應該設置一個自定義身份驗證處理過濾器,該過濾器將使用URL中傳遞的令牌來構建有效的自定義身份驗證。它應該從AbstractAuthenticationProcessingFilter派生。然後,您應該設置一個能夠處理該令牌的AuthenticationProvider,並通過該令牌實際驗證用戶身份,並將其注入到AuthenticationManage中。這裏有更多沸騰的盤子,對於你目前的問題,我真的不確定它是否值得。

+0

感謝您的建議。 – Robert