电邮确认验证

时间:2017-12-08 12:26:12

标签: c# wcf xamarin.forms

我有一个Wcf服务和一个Xamarin.forms移动应用程序,当用户从移动应用程序注册时,我希望Web服务向用户发送电子邮件验证,当用户转到他/她的电子邮件并单击链接用户帐户将被激活。

我只有一个解决方案,即在验证链接中包含用户ID,并提供服务网址,然后是验证功能和用户ID。

有没有更好的安全方式,因为我不想在链接中提供wcf链接?

private void SendEmailConfirmation(String EmailId,string UserId)
        {
            MailMessage msg = new MailMessage();
            SmtpClient smtp = new SmtpClient();
            string emailId = EmailId;
            msg.From = new MailAddress("YourGmailEmailId@gmail.com");           
            msg.To.Add(emailId);
            msg.Subject = "Confirmation email for account activation";
            //For testing replace the local host path with your lost host path and while making online replace with your website domain name
            //string ActivationUrl = "http://localhost:8665/FetchUserId(emailId) & "&EmailId=" & emailId);
            msg.Body ="Thanks for showing interest and registring in <a href='http://www.activationlink.com'> webservice.com<a> " +
                  " Please Thanks!";
            msg.IsBodyHtml = true;
            smtp.Credentials = new NetworkCredential("emailaddress@gmail.com", "mypassword");
            smtp.Port = 587;
            smtp.Host = "smtp.gmail.com";
            smtp.EnableSsl = true;
            //NetworkCredential Credentials = new NetworkCredential("emailaddress@gmail.com", "Super2@17");
            //smtp.UseDefaultCredentials = false;
            smtp.Send(msg);
        }

2 个答案:

答案 0 :(得分:1)

您可以创建一个函数来生成一个非敏感的代码(如令牌,哈希,guid或类似的东西),并将其与用户数据和日期限制相关联以激活该链接(例如24小时)。

然后,当用户使用令牌单击此链接时,您将验证令牌是否仍然有效并启用用户的帐户。

答案 1 :(得分:-2)

using System.Linq;
using System.Net;
using System.Net.Mail;

您需要导入上述命名空间。