我想爲新創建的自動生成鏈接爲新註冊用戶自動生成鏈接
mywebapp將發送給用戶的電子郵件的用戶。當
用戶點擊鏈接我應該更新用戶爲
'激活'。
所以我有一些問題,我想知道,如果
從我迄今爲止看過我的邏輯是正確的。
- 用戶在表單中,按填充進入
2.My Web服務處理的數據,並創建一個帳戶......
所以在這其中我散列部分用一些獨特的salt鍵入密碼並將其存儲在數據庫中。
,所以我將有一個像
user_ID username password active
1 taniamm20 12346645556665566666 0
我可以在驗證鏈接使用哈希密碼例如
http://localhost:9092/localbusscat/services/localbusscat/UpdateDB?choID=12346645556665566666
它是一個很好的做法表?
或者此時我不應該保存用戶的密碼,只需保存user_id並使用該用戶的java.UUIID生成長的唯一密鑰並將其保存在表中並使用此唯一密鑰進行驗證。
我覺得我的UpdateDBService應該likethis
public String UpdateDB(int choID) throws ClassNotFoundException
{
String strDelReturn = "UPDATE_FAIL";
Class.forName("org.postgresql.Driver");
try
{
conn = DriverManager.getConnection("....");
}
catch (SQLException ex)
{
ex.printStackTrace();
}
PreparedStatement pstmt = null;
String selectQuery = "update user_table set active=active+1 WHERE password="+ choID ;
try {
pstmt = conn.prepareStatement(selectQuery);
int rowss = pstmt.executeUpdate();
if (rowss != 0)
strDelReturn = "UPDATE_OK";
}
catch (Exception ex)
{
}
return strDelReturn;
}
我認爲應該創建一個隨機的字母數字字符串並將其存儲在「臨時數據庫」中,以及驗證超時等。如果在「x」分鐘後沒有單擊該鏈接,驗證過期並且鏈接變得無效。當然,所述字符串在數據庫中必須是唯一的。驗證之後,更新你的'主動標誌'(或者在你的實際用戶數據庫中做一個'第一次插入'),你就全部設置好了。 – 2013-03-17 08:15:26
如果散列密碼用於登錄,則應該生成另一個散列並將其用作激活碼。 – Pietu1998 2013-03-17 08:15:26
除了refugnic-eternium評論,您還可以使用長格式的日期作爲唯一ID,以便計算哪個鏈接已過期鏈接。但是,在長時間生成日期保持同步的方法:) – Sach 2013-03-17 08:21:24