2012-09-25 130 views
6

我使用燒瓶登錄擴展設置了Flask應用程序。 flask-login文檔建議設置一個替代的令牌生成器,該生成器不會簡單地使用用戶ID和應用程序密鑰來創建會話令牌(這是默認方法)。但它沒有提供任何明確的建議如何做到這一點。燒瓶登錄令牌加載程序

因此,對於User.get_auth_token(),我將make_secure_token函數與用戶電子郵件和密碼作爲參數(所以我得到這些參數+應用程序祕密的散列)。

接下來,我需要能夠通過token_loader回調從令牌中獲取用戶。在flask-login中生成標記的默認方法是包含原始用戶標識和用戶標識+應用程序祕密的散列。這使得從令牌中找到用戶非常簡單 - 只需獲取ID並查找用戶即可。

但是我應該公開會話令牌中的用戶ID嗎?如果我不這樣做,是否應該將會話標記存儲在數據庫中或其他具有用戶標識的其他位置以進行查找?

總之:沒有人知道創建安全令牌的最佳做法是什麼&對應token_loader回調?

回答

3

在Flask郵件列表上,Matt Wright指出我在燒瓶安全擴展中的his implementation。他使用itsdangerous創建一個簽名令牌,該令牌編碼一個序列號(通過URLSafeTimedSerializer())列表,其中包含用戶標識和密碼哈希。令牌然後可以被解碼以獲取用戶ID。