ASP.. NET表单身份验证,允许用户仅使用用户名访问特定页面

本文关键字:用户 访问 身份验证 表单 许用户 ASP NET | 更新日期: 2023-09-27 18:17:28

我正在使用ASP。. NET 4.5 web表单:我需要用户能够重置他们的密码通过电子邮件(仍在工作)安全问题/答案和使用忘记密码方法

我遇到的问题是,为了使用重置/更改密码方法,我需要将安全问题/答案变为false。因此,我通过创建一个存储安全问题和答案的表来创建一个解决方案。

当用户回答正确时,除了输入ID号外,还会进入重置密码页面。这一切都很好,他们可以重置密码和登录。

我的问题: 我需要重置密码页不公开,是否有办法我可以利用用户名,当用户正确回答时,我可以从DB获得,以访问重置页?

目前任何人都可以访问这个URL。我还在考虑在同一页面上启用/禁用控件,而不是URL。

谢谢你看我的长篇故事

ASP.. NET表单身份验证,允许用户仅使用用户名访问特定页面

为什么不使用Guid作为重置凭证令牌;将其保存在数据库中的某个地方(某些表),然后使用Guid作为重置密码页面的查询字符串参数?在Reset-Pswd页面中,检查查询字符串中的令牌是否有效。如果不是,告诉用户,这是一个错误的请求。如果不清楚,请告诉我。

在您的登录表单中,在您的forgot_pswd Click事件处理程序中使用这个。

var resetToken = Guid.NewGuid();
//Code to insert into a table on the db..
//Have a table something like:
//ResetCredentialsToken(UserId int, Token nvarchar(256), IsExpired int)
YourDAL.InsertPwdToken(userId, resetToken, 0);
Response.Redirect("ResetPswd.aspx?Guid=" + resetToken.ToString());

在ResetPswd。Aspx页面,检查令牌是否有效。

if (!YourDAL.IsValidToken(userId, resetToken))
   showSomething();