在ASP.NET Web应用程序中实现密码重置的电子邮件验证
- 开发
- 12
-
流程
- 用户请求密码重置:用户通过提供他们的电子邮件地址来启动密码重置过程。
- 生成验证码:生成随机的验证码,并与用户的电子邮件地址关联。
- 发送验证邮件:向用户的电子邮件地址发送包含验证码的电子邮件。
- 用户接收邮件:用户接收电子邮件并提取验证码。
步骤
- 编写发送验证码的API端点:创建一个HTTP POST端点,接受包含用户电子邮件地址的JSON对象,并生成随机验证码。
- 发送验证邮件:使用SMTP客户端将包含验证码的电子邮件发送到用户的电子邮件地址。
- 关联验证码和用户:将验证码与用户的电子邮件地址关联,并在一定时间内存储在缓存中,以便后续验证步骤使用。
- 用户验证:在接收到电子邮件后,用户提取验证码并在应用程序中输入以验证身份。
- 验证成功:如果验证码匹配并且在有效时间内被验证,则允许用户继续执行密码重置操作
[HttpPost]
public IHttpActionResult SendVerificationCode([FromBody] JObject obj)
{
dynamic model = obj;
string toEmail = model.email;
Random random = new Random();
int verificationCode = random.Next(100000, 999999);//验证码
var fromAddress = new MailAddress("发件人邮箱", "发件人名称");
var toAddress = new MailAddress(toEmail, "Recipient Name");
const string fromPassword = "qq邮箱的鉴权码";
const string subject = "重置密码验证码";
string body = $"你的验证码是:{verificationCode}";
HttpContext.Current.Cache.Insert(toEmail, verificationCode, null, DateTime.Now.AddSeconds(3600), System.Web.Caching.Cache.NoSlidingExpiration);
var smtp = new SmtpClient
{
Host = "smtp.qq.com", // QQ 邮箱的 SMTP 服务器地址
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
return Json(new { success = true, message = "验证码已发送。"});
}
原文地址:https://blog.csdn.net/m0_73453690/article/details/138724211
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:https://www.suanlizi.com/kf/1789930589214871552.html
如若内容造成侵权/违法违规/事实不符,请联系《酸梨子》网邮箱:1419361763@qq.com进行投诉反馈,一经查实,立即删除!