2014-06-30 55 views
0

我目前正在研究一個j2ee web應用程序。該應用程序爲用戶提供了一種方法,可讓用戶在忘記密碼時重置密碼。用於刪除數據庫條目的EJB定時器

我有一個數據庫表3列:用戶名,密鑰和時間戳。 當用戶請求更改密碼時,我使用他們的用戶名和隨機密鑰在表中添加一個條目(確保它們在表中沒有重複的鍵,並且用戶只能在表中出現一次)。我也加上當前時間。然後我給他們發電子郵件的鏈接到包含他們的關鍵應用,是這樣的:

mysite.com/app/reset?key=abcxyz123 

處理這個請求,看在URL中的關鍵找到復位匹配條目的servlet表來確定密鑰屬於哪個用戶。如果密鑰與條目不匹配,則顯示一個錯誤頁面,如果有錯誤頁面,則顯示密碼重置屏幕。一旦用戶更改密碼,我手動刪除該重置表中的條目。

我想實現相當於一段時間的密碼重置鏈接,這樣我就沒有不必要的在表中游蕩的條目,我想到了2個選項,我已經實現了第一個選項:

1)創建一個觸發每分鐘,這將在復位表,其中時間戳是老年人超過30分鐘刪除條目的EJB計時器。這是一個手動過程,因爲我使用hibernate作爲我的jpa實現,所以我從表中檢索所有條目,檢查它們的時間戳,並刪除舊的。

2)創建一個數據庫作業,刪除特定年齡的行?

我的問題是,有沒有人看到任何缺點第一種方法,二是第二個選項甚至可以與MySQL?我認爲,如果我可以使用第二種方法,則可以擺脫計時器,讓數據庫處理密碼重置鏈接的生存時間,這可能會更有效。

我一直沒做J2EE開發爲長,但基於這樣的認識:我有,這似乎是2種邏輯方法。我歡迎任何意見。

回答

0

3)創建將連接到數據庫的腳本,執行刪除,斷開連接。然後你可以通過操作系統來安排這個腳本。 crontab中。

關於選項1 - 該解決方案的缺點是,它使用應用服務器資源的東西,只能在數據庫中完成,不依賴/使用的所有應用程序邏輯。

的好處是,整個程序是自包含的,你不需要對數據庫的任何額外的安裝/設置任務,與2和3

相關問題