如何在webconfig

时间:2016-04-27 06:33:31

标签: c# asp.net-mvc session session-variables

我正在处理重置密码。当用户点击通过电子邮件发送给他的重置密码链接时,他应该被重定向到他在应用程序中的帐户 到目前为止我做了以下几点。 在网络配置中,我在键值对中硬编码了网址:

<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不能包含文本”。

1 个答案:

答案 0 :(得分:0)

sometext <span style="display: inline; -moz-user-select: none;">&#x20B9;</span> some other text 设置会自动为您执行此操作。

您需要在web.config的 sessionState 部分启用 cookieless

请参阅sessionState Element ConfigurationAbout Cookieless session in ASP.NET

编辑:哎呀!我有点误解了这个问题。

由于您使用的是ASP.NET MVC,我建议您将重置密码页面(从邮件打开的页面)映射到某些控制器操作。然后,您需要将用户ID和随机生成的hashkey作为GET参数传递,并将相同的hashkey保存在数据库中。当用户单击邮件中提供的此链接时,您需要验证数据库中是否存在用户ID和hashkey的组合。如果有,则请求是有效的。然后,您可以继续进一步的步骤。

您可以使用System.Guid.NewGuid()生成随机哈希密钥。您不应该为此目的使用会话ID。