我試圖建立一個「密碼重置」功能找到該數據的DbContext。爲此,我在用戶請求重置密碼並將其作爲電子郵件發送時生成一個guid,並將其鏈接到密碼重置頁面,該頁面以guid作爲查詢字符串。 我寫的代碼如下:不能使用LINQ
Request.QueryString[BusinessLayerConstants.resetPasswordQueryString]) ? Request.QueryString[BusinessLayerConstants.resetPasswordQueryString] : String.Empty;
passwordCode = System.Web.HttpUtility.UrlDecode(passwordCode);
using (DBEntities entities = new DBEntities())
{
User = entities.AspNetUsers.FirstOrDefault(u => u.PasswordReset == passwordCode);
if (User != null)
{
//TODO
}
}
的問題是,LINQ始終返回null。如果我使用相同的GUID在數據庫中運行SQL命令,我可以看到數據。並且passwordCode變量也獲得了正確的值。我甚至檢查過passwordCode是否有一些隱藏的字符,因爲它來自查詢字符串;但它也很好。
我也使用此相同的邏輯激活爲好。我傳遞一個GUID作爲查詢字符串,並進行激活,我可以用下面的代碼查找數據:
AspNetUser user = entities.AspNetUsers.FirstOrDefault(u => u.ActivationCode == activationCode);
它不輸入密碼的工作,我也用.Equals()
和.Contains()
與嘗試沒有運氣。
如果任何人有任何想法可能是錯誤的,我希望得到任何幫助。謝謝。
編輯: PasswordReset只是一些GUID我產生傳遞作爲查詢字符串。 一切都很好,當我這樣做:
什麼是'u.PasswordReset'?它可以被加密/散列,因此不同於'passwordCode'? – user1666620
'PasswordReset'很可能不是你真實的想法。嘗試再次檢查該屬性的值以確保。 – Hopeless
@ user1666620它沒有加密,它是我自己產生的guid。@絕望,我認爲它是什麼,因爲我能夠在db中看到它。如果我做這樣的事情:SELECT FROM [AspNetUsers]其中PasswordReset像「cf8d0488-1f60-4ab0-9801-035fbc6bc58873eea9b1-e557-4744-82a5-2b152ea67db0」,然後我能找到的數據。 – biseibutsu