您的位置:首页 > 其它

Web2.0用户注册,激活,密码找回模块

2006-01-03 21:02 549 查看
在web2.0中,都采用Email作为登陆ID,账号模块主要由以下功能组成

登陆验证(在激活前提下,才可登陆)
用户注册
账号激活
重发激活邮件
密码找回

为实验这模块,我们可以提出这样的解决方案:
A.数据库设计
--用户注册
CREATE PROCEDURE Tao_UserReg
(
@Email NVarChar(100),
@Password NVarChar(50),
@NickName NVarChar(50),
@GUID NVarChar(50)=null OutPut --返回激活码,发往用户邮箱
)
AS
if not exists(select * from Tao_Users where Email=@Email or NickName=@NickName)
begin
Insert Into Tao_Users(Email,NickName,Password,RegTime)
Values(@Email, @NickName, @Password,GetDate())

Select @GUID = NewID();--由SQL生存一个GUID
--插入验证信息表
Insert Into Tao_Valid (GUID, UserID,Type,AddTime)
Values (@GUID, @@Identity,1,GetDate())
end
GO
数据库返回一个GUID后,我们再往用户邮箱中发送验证Email,用户收到激活邮件后,进行账号激活

--激活账号,返回用户信息(自动登陆系统)
CREATE PROCEDURE Tao_UserActive
(
@GUID NVarChar(50)
)
AS
declare @UserID int --存放用户ID
Select @UserID=UserID From Tao_Valid Where GUID=@GUID And Type=1
--删除验证表中记录
Delete From Tao_Valid Where GUID=@GUID And Type=1
--更新用户状态
Update Tao_Users Set State=1 Where UserID= @UserID
--返回用户信息,自动登陆
Select * From Tao_Users Where UserID= @UserID And State=1
GO

--重发激活码
CREATE PROCEDURE Tao_UserAgainActive
(
@Email NVarChar(100),
@GUID NVarChar(50) Output
)
AS
declare @UserID int
--从用户表中根据Email,查出UserID
Select @UserID=UserID
From Tao_Users
Where State=0 And Email=@Email
--如果找到有此未激活用户
if NOT(@UserID=NULL)
Begin
--删除原有激活信息
Delete From Tao_Valid Where UserID=@UserID
Select @GUID=NewID() --重新生存ID
Insert Into Tao_Valid
(GUID,UserID,Type,AddTime)
Values (@GUID,@UserID,1,GetDate())
End找回密码部分(返回GUID后,发往用户邮箱)

--发送找回密码验证码
Create Procedure Tao_UserCPwdCode
(
@Email NVarChar(100),
@GUID NVarChar(50)OutPut
)
AS
Declare @UserID int
--从用户表中查出UserID
Select @UserID=UserID
From Tao_Users
Where State=1 And Email=@Email
--如果此用户
If Not(@UserID=Null)
Begin
--删除原有更改密码验证码
Delete From Tao_Valid Where UserID=@UserID And Type=2
Select @GUID=NewID()
--插入新验证码
Insert Into Tao_Valid
(GUID,UserID,Type,AddTime)
Values(@GUID,@UserID,2,GetDate())
End

密码重设部分,根据用户邮箱中的更改密码链接GUID,获取用户昵称,进入更改密码页面,

--密码找回
CREATE PROCEDURE Tao_UserCPwd
(
@GUID NVarChar(50)=null,
@NewPwd NVarChar(50)=null
)
AS
if(@NewPwd=null)
--返回用户昵称,UI中进入重设密码页面
begin
Select U.NickName From Tao_Users AS U,Tao_Valid AS V
Where V.UserID=U.UserID AND V.GUID=@GUID
end
--更改用户密码
Else Begin
declare @UserID int
Select @UserID=UserID From Tao_Valid Where GUID=@GUID And Type=2
Delete From Tao_Valid WHere GUID=@GUID And Type=1
Update Tao_Users Set State=1,Password=@NewPwd Where UserID= @UserID
Select * From Tao_Users Where UserID= @UserID
End
GO

这样就完成了整个账户管理部分模块.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: