如果你需要存儲的信息是
那麼你必須use the Session,通過實施SessionAware
:
這麼說,我不知道你要存儲用戶密碼,也沒有關聯密碼的用戶;
您應該在您的Web應用程序中創建一個登錄頁面,僅處理該Action中的密碼,根據數據庫(或其他)驗證它,並將一些身份驗證ID存儲在Session中,而不是密碼本身t再次驗證用戶,除非會話過期,那麼用戶將被重定向到登錄頁面...無需將密碼保存在內存中)。
儘管如此也爲用戶身份驗證的最佳實踐勸阻驗證對數據庫存儲的密碼輸入的密碼;
您應該使用一些單向的hashing algorithm(adding a salt以防止Rainbow Table
的攻擊)散列密碼,並根據數據庫上的散列密碼進行檢查。這樣,即使數據庫管理員也不知道用戶的密碼,並且在忘記密碼的情況下,它將被重置,而不是被檢索。
在Java中,最好的實現之一是jBCrypt,基於BCrypt。
希望可以幫助...
編輯
,以此來你在你的Web應用程序,你可以使用兩種不同的豆類處理對象的概念分開:一個「全豆」的閱讀,所有的屬性,用於書寫的「子集Bean」,僅包含可能改變的屬性。
例如,ID和密碼不應該改變...您可以從數據庫中讀取「完整」,然後寫入JSP,然後寫入數據庫「子集」(除了在用戶註冊中,您將寫入完整的)...
爲了使它更容易理解,Full Bean是Dao
對象完全映射數據庫字段,而子集Bean是Presentation
對象,您將通過僅複製所需的屬性Dao對象......他們都是DTO,但有兩種不同的語義層次。
否則只是把你的bean放在session中,它是一行代碼,你會沒事的。
感謝您的回覆,我已經使用哈希算法和鹽我的問題是如何保持特性的值後更新而不是null,沒有使用會話,因爲在我的課我有很多屬性,我不想要用於更新表單 – user1655410
您可以使用兩種不同的bean:用於閱讀的「Full Bean」,包含所有屬性,以及用於書寫的「子集Bean」,僅包含可能更改的屬性。例如,ID和密碼不應該改變......你可以從數據庫中讀取「Full」,然後寫入JSP,然後寫入數據庫「Subset」(除了用戶註冊,你將寫滿)。 ..否則只是把你的bean放在會話中,這是一行代碼,你會沒事的。 –
謝謝你的解釋,我想我會做什麼。您應該將您的評論作爲答案。 – user1655410