2016-04-27 47 views
0

我正在處理重置密碼代碼。當用戶點擊通過電子郵件發送給他的重置密碼鏈接時,他應該被重定向到他的賬戶中的應用程序 我已經完成了以下工作。 在web配置我在鍵值對硬編碼的網址:如何將會話追加到webconfig中的url

<appSettings> 
<add key="RESET_PASSWORD" value="http://localhost:portnumber" /> 
</appSettings> 

我已經使用的AppSettings來存儲RESET_PASSWORD的密鑰並將其傳遞給一個字符串

string resetpassword = System.Configuration.ConfigurationManager.AppSettings["RESET_PASSWORD"].ToString(); 

而且我還通過這個字符串用於我用於重置密碼鏈接的<a href>標記。

現在我想傳遞會話ID和做這樣的事情,直接在web配置:

<add key="RESET_PASSWORD" value="http://localhost:portnumber?uid=<%=Session("userId")%>" /> 

這可能嗎?我該如何做到這一點?當我嘗試這樣做時,出現錯誤「AppSettings不能包含文本」。

回答

0

cookieless="true"設置會自動爲您執行此操作。

您需要啓用無Cookie會話狀態部分您的web.config。

請參考sessionState Element ConfigurationAbout Cookieless session in ASP.NET

編輯:哎呀!我有點誤解了這個問題。

由於您使用的是ASP.NET MVC,我建議您將重置密碼頁(從郵件打開的那個頁)映射到某些控制器操作。然後您需要將用戶ID和隨機生成的hashkey作爲GET參數傳遞並將相同的hashkey保存在數據庫中。當用戶單擊郵件中提供的此鏈接時,您需要驗證數據庫中是否存在與用戶ID和散列鍵的組合。如果有,那麼請求是有效的。然後,您可以繼續進一步的步驟。

您可以使用System.Guid.NewGuid()生成隨機密鑰。您不應該爲此使用會話ID。