Asp.net验证电子邮件

时间:2013-10-17 10:58:57

标签: c# asp.net email-verification

用户完成注册过程后,我们需要向用户发送验证邮件。 我知道如何发送电子邮件,但我需要知道发送验证链接的过程是什么,我应该在表中创建一个列来保存验证令牌并将其加密发送。如果我们必须保存验证令牌,那么生成此令牌的完美方式是什么。我不尝试任何解决方案。

3 个答案:

答案 0 :(得分:3)

我建议在用户成功注册时生成GUID,如下所示:

Guid theVerificationCode;
theVerificationCode = Guid.NewGuid();

现在将此GUID值存储在数据库列中,可能位于类似User的表中。

现在,当您发送电子邮件时,您可以通过查询字符串将此验证码值作为URL的一部分提供,如下所示:

string theVerificationCode = GetVerificationCodeFromDatabase();
string theEmailLink = "https://www.yoursite.com/YourApp/Verify.aspx?code=" + theVerificationCode;

最后,您需要在Verify.aspx页面中构建逻辑,该逻辑将匹配查询字符串中传递的内容与数据库中的内容匹配,如果它们匹配,那么您可以允许用户进行身份验证,如果不匹配然后显示错误信息。

答案 1 :(得分:1)

我建议使用名为“ActivationToken”的字段并生成GUID。您可以通过调用newid()函数直接在SQL中执行此操作,或者通过调用Guid.NewGuid()在C#中执行此操作。这是一个非常独特/随机的值,几乎不可能暴力。

因此,当用户注册时,您会执行以下操作:

insert into tblUsers (Username, Password, Active, ActivationToken) values ('johndoe', 'mypassword', 0, newid())

链接就像:http://yoururl.com/Activate.aspx?token= {yourActivationGuid}

Update tblUsers set Active=1 where ActivationToken={yourActivationGuid}

如果您的UserID已经是GUID,那么您可能只是使用它(例如,如果您使用的是aspnet_user表)。至于不允许登录,只需检查Active标志是否设置为true。如果没有,请禁止登录。

所以要验证登录,你可以这样做:

select * from tblUsers where Username="johndoe" and Password="mypassword" and Active=1

答案 2 :(得分:1)

是的,您应该在表格中创建一个列以保存验证令牌。

您可以将激活码设为" GUID"

一种简单的方法是:

  1. 通过组合User-ID,验证令牌和Creation-date来构建您的查询字符串。

  2. 对组合字符串进行编码

    "用户=" + Convert.ToBase64String(Encoding.Unicode.GetBytes(String.Format(" user = {0}& code = {1}& cd = {2}",User-ID,verification,Creation -date)));

  3. 将链接发送给用户

  4. 当您的用户点击该链接时,请解码查询字符串

  5. 通过使用"&"

    进行拼接来分隔合并后的值

    Encoding.Unicode.GetString(Convert.FromBase64String(ActivationDetails))。Split(new Char [] {'&'});

  6. 您拥有激活帐户所需的所有值。此外,您还可以添加逻辑和加密方法。但是,基数保持不变。

    希望这有帮助。