我可以在没有向导结构的情况下使用 PasswordRecovery Control ASP.NET (Membership) 吗?没有 SuccessTemplate 和问题模板?

问题描述

我在我的 ASP.NET WebForms 应用程序 (C#) 中使用 PasswordRecovery 控件,现在的情况是,当我们使用 PasswordRecovery 控件时,我们被迫使用向导控件,这意味着,如果用户正确输入用户名,它将隐藏文本框并显示成功消息(或您在 SuccessTemplate 中输入的任何内容)。

现在,问题是这样,当未经授权的用户尝试访问应用程序时,他们可以尝试这种控制从应用程序中获取实际用户名(安全风险)。因此,如果他们尝试错误的用户名,他们将获得“UserNameFailureText”,如果他们输入正确的用户名,他们将看到下一个模板(SuccessTemplate),该模板将显示成功消息(通过这个方式,他们可以得到输入的用户名在系统中是否可用),所以我想删除向导结构,在所有情况下,带有用户名的文本框将保留在屏幕上,无论用户输入什么,他将看到一条通用消息“如果您输入了正确的用户名,您将收到一封电子邮件”之类的。

如果有人知道 PasswordRecovery 控件是否可行,或者我是否应该构建自定义页面?

PS: 我已经尝试从页面中删除 SuccessTemplate,它会自动采用默认的成功模板。

解决方法

我不明白你为什么不能从头开始创建一个页面?该文本框所做的就是检查用户是否存在,向他们发送电子邮件,并显示您的消息。因此使用内置模板的理由并不多。

因此,一个简单的按钮重置密码可以运行一些代码,发送重置的电子邮件,并设置标签或文本框,甚至一些“div”作为visible = true来显示您的消息。您没有提及或注意您正在使用的身份验证提供程序 - 但考虑到内置模板 - 那么这建议使用 FBA,因此驱动站点并保存用户 + 密码的表应该完全可用于您的代码背后。>

另一方面,您可能需要添加某种密码重置表,比如包含一个 GUID 生成的 ID 和日期时间。这样,您在电子邮件中发送的链接是特定于一个用户的 - 并且在该链接到期之前有一段有限的时间。

或者我想电子邮件中的链接只是将他们定向到新密码页面 - 但我倾向于扔进一个 GUID,该 GUID 会根据新的重置表进行检查。使用 guid,然后当他们单击他们的电子邮件链接时,您可以显示他们的姓名,并且只提示输入新密码。电子邮件链接仅包含该 GUID 作为参数,您可以从重置表中提取该行以了解谁将重置其密码。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...