【问题标题】:Sending email verification link to activate profile c#发送电子邮件验证链接以激活个人资料 c#
【发布时间】:2013-02-17 08:22:29
【问题描述】:

我目前正在构建一个网站,人们可以在其中注册并拥有自己的内容页面。我创建了一个自定义登录页面,而不是使用 Microsoft Visual Studio 2010 上提供的创建用户向导。我在后端有一个带有

的 SQL 数据库

tblUsers

将保存用户注册的位置。我已经配置了我的电子邮件 smtp 设置,并且能够使用注册人的电子邮件发送电子邮件。我已经对此进行了测试,并且可以正常工作。

问题

(1) 我不知道如何生成激活链接以附加到电子邮件中。

(2) 如何编写代码来更新与用户相关的 SQL 表中的字段

例如:用户验证 = true

当用户点击通过电子邮件发送的链接时。

(3) 如何阻止用户在不经过验证过程的情况下登录网站? (我知道这可以通过在“创建用户”向导中更改一些内容来轻松完成,但是我习惯性地创建了我的注册,因此它在注册按钮单击事件上运行)因此我似乎无法弄清楚如何做它。

如果可能,请尝试帮助我 将不胜感激。

【问题讨论】:

    标签: c# asp.net visual-studio-2010 smtp email-verification


    【解决方案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
    

    【讨论】:

    • 您是否有任何链接可以帮助我进一步了解如何整合它?
    • 对不起,我没有。我实际上必须运行,但我用更多示例代码更新了我的帖子。如果我回来后您仍然需要帮助,我会提交更新。
    • 不要以纯文本形式存储密码
    • SLake,我应该提一下,这是我发布的半伪代码。只需遵循这些概念(如何应用它们取决于您),正如 SLake 所说,不要以纯文本形式存储密码。
    • 答案是完美的并且解释得很好。在这里,每个注册都会生成一个唯一的 ID,并将其存储到您的数据库中。您的确认页面的链接将发送给您的客户,并附上唯一的 ID。当用户点击或请求该 url 时,您可以通过此唯一 ID 确认他。
    【解决方案2】:

    创建用户登录页面。单击提交后,生成一个如上所述的新 guid(),并使用激活 guid(唯一)将电子邮件发送给用户,一旦用户单击,在数据库中激活用户 (SQL)。

    【讨论】:

    • 如果有任何我可以遵循的例子,它可能真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 2014-03-16
    • 2011-02-14
    • 2016-07-05
    • 2020-04-20
    • 1970-01-01
    • 2018-06-02
    • 2016-02-16
    相关资源
    最近更新 更多