gpt4 book ai didi

c# - ASP.NET Forms Authentication,允许用户仅使用用户名访问特定页面

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:00 26 4
gpt4 key购买 nike

我正在使用 ASP.NET 4.5 网络表单:我需要用户能够通过电子邮件 (仍在努力)安全问题/答案 和使用 重置密码忘记密码方法

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

当用户回答正确后,除了输入ID 号码,他们还会进入重置密码页面。一切正常,他们可以重置密码并登录。

我的问题:我需要重设密码页面不公开,有没有一种方法可以利用用户名(当用户回答正确时我可以从数据库中获取)来提供访问重置页面?

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

感谢您阅读我的长篇故事。

最佳答案

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

在您的登录表单中,在您的 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 页面中,检查 token 是否有效...在 Page_Load 中

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

关于c# - ASP.NET Forms Authentication,允许用户仅使用用户名访问特定页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17007729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com