如何将会话附加到 webconfig 中的 url

本文关键字:webconfig 中的 url 会话 | 更新日期: 2024-12-05 18:14:56

我正在处理重置密码代码。当用户单击通过电子邮件发送给他的重置密码链接时,他应该被重定向到他在应用程序中的帐户到目前为止,我已经做了以下工作。在 Web 配置中,我已经对键值对中的 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")%>" />

这可能吗?我怎样才能做到这一点?当我尝试执行此操作时,我收到错误"应用程序设置无法包含文本"。

如何将会话附加到 webconfig 中的 url

cookieless="true"设置会自动为您执行此操作。

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

请参阅会话状态元素配置和关于无 Cookie 会话 ASP.NET

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

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

您可以使用 System.Guid.NewGuid() 生成随机哈希键。不应将会话 ID 用于此目的。