3

我目前正在建立一个人们可以注册的网站,他们可以拥有自己的内容页面。我没有使用 Microsoft Visual Studio 2010 上提供的创建用户向导创建了一个自定义登录页面。我在后端有一个 SQL 数据库

tbl用户

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

问题

(1) 我很困惑如何生成要附加到电子邮件中的激活链接。

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

例如:用户验证 = true

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

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

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

4

2 回答 2

10

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

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

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
于 2013-03-03T01:14:08.613 回答
0

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

于 2013-03-03T01:41:35.060 回答