我有一个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);
}
答案 0 :(得分:1)
您可以创建一个函数来生成一个非敏感的代码(如令牌,哈希,guid或类似的东西),并将其与用户数据和日期限制相关联以激活该链接(例如24小时)。
然后,当用户使用令牌单击此链接时,您将验证令牌是否仍然有效并启用用户的帐户。
答案 1 :(得分:-2)
using System.Linq;
using System.Net;
using System.Net.Mail;
您需要导入上述命名空间。