求一个ASP.NET JS 找回用户密码现实思路及源码。 完全没有了思路,特别是发送邮件没做过。望知道的朋友给点指导谢谢!
★★★★★★★★★★★★★★★★★★★★★★★★★不胜感激★★★★★★★★★★★★★★★★★★★★
------解决方案--------------------------------------------------------
发送邮件,这个不用说了
①系统自动生成一个随机密码到发用到用户邮箱!,如果密码保存的是明文,例如csdn,可以直接把密码发到用户邮箱
②发送一个连接地址到用户注册邮箱,用户登录邮箱点击地址,地址的参数可以包括用户ID,
并支持加、解密的,用户打开这个地址,后台解密这个ID
让用户重新输入地址(等同于修改密码)
欢迎补充哈哈
------解决方案--------------------------------------------------------
生成一个随机的密码放到用户那边,然后邮件给用户他的最新的密码(邮件的地址是用户注册的时候提供的),然后让用户用这个密码打登录。
------解决方案--------------------------------------------------------
加密的办法比较多 比较流行的就是md5 md5+加盐,微软自带的也有很多加密 比如sha256
Demo
- C# code
/// <summary> /// sha256加密函数 /// </summary> /// <param name="ss">需要加密的字符串</param> /// <returns></returns> public string getsha256(string str) { SHA256 sha = new System.Security.Cryptography.SHA256Managed(); byte[] shaByte; shaByte = sha.ComputeHash(Encoding.Default.GetBytes(str)); sha.Clear(); return Convert.ToBase64String(shaByte); }
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
2个技术点:
1.发邮件
2.加密
------解决方案--------------------------------------------------------
- C# code
/// <summary> /// 发送邮件的功能 /// 引用方式: /// </summary> public class emailHelp { /// <summary> /// 发送邮件(1-5为发件人的信息;6-10为收件人信息) /// </summary> /// <param name="SendID">发件人邮箱账号</param> /// <param name="SendPass">发件人邮箱密码</param> /// <param name="SendName">发件人名称</param> /// <param name="host">Smtp服务器</param> /// <param name="port">smtp端口</param> /// <param name="ReceiveID">接收人邮箱账号</param> /// <param name="ReceiveName">接收人姓名</param> /// <param name="Title">邮件标题</param> /// <param name="Content">邮件正文</param> /// <param name="fj">邮件附件</param> public static void SendEmail(string SendID, string SendPass, string SendName, string host, int port, string ReceiveID, string ReceiveName, string Title, string Content, string fj) { try { #region 发送邮件 SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient smtp.Port = port; smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.Host = host; //指定 smtp 服务器地址 smtp.UseDefaultCredentials = false; smtp.Credentials = new NetworkCredential(SendID.Trim(), SendPass); MailMessage mm = new MailMessage(); //实例化一个邮件类 mm.Priority = MailPriority.Normal; //邮件的优先级 //发件人邮箱地址 mm.From = new MailAddress(SendID.Trim(), SendName); mm.To.Add(new MailAddress(ReceiveID, ReceiveName)); //邮件标题和编码格式 mm.Subject = Title; mm.SubjectEncoding = System.Text.Encoding.UTF8; //邮件正文是否是HTML格式和编码格式 mm.IsBodyHtml = true; mm.BodyEncoding = System.Text.Encoding.UTF8; //邮件正文 mm.Body = Content; //附件 if (!string.IsNullOrEmpty(fj)) { string[] fjArr = fj.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < fjArr.Length; i++) { mm.Attachments.Add(new Attachment(fjArr[i])); } } smtp.Send(mm); #endregion } catch (Exception ex) { Console.WriteLine("{0}", ex.Message); } } }