您的位置:首页 > 数据库

SQL Server 存储过程-验证用户是否存在

2012-11-24 17:02 435 查看
此存储过程旨在验证用户是否存在、密码错误、是否是在受限制的时间内以及当登入时在规定的时间内输入三次错误就限制登入时间

---用户登录系统

CREATE proc [dbo].[UserLogin]

(

@UserAccount nvarchar(20), ---登录账户

@UserPassWord nvarchar(50), ---登录密码

@IPAddress nvarchar(20), ---主机IP地址

@MacAddress nvarchar(20) ---主机MAC地址

)

as

begin

declare @LimitBeginDate datetime

declare @PassWord nvarchar(20)

declare @IsLogin nvarchar(1) ---0成功,1用户不存在,2密码错误,3受限期内

set @PassWord=''

select @PassWord=UserPassWord,@LimitBeginDate=LimitBeginDate from SysUser where UserAccount=@UserAccount

if @PassWord=''

begin

---用户帐户不存在

set @IsLogin='1'

end

else

begin

---用户帐户存在

if @LimitBeginDate is not null

begin

---存在限制登录时间

if dateadd(hh,6,@LimitBeginDate)>getdate()

begin

---用户帐户仍然在受限时间内

set @IsLogin='3'

end

else

begin

---用户帐户已经超过受限时间

update SysUser set LimitBeginDate=null where UserAccount=@UserAccount

if @PassWord=@UserPassWord

begin

---用户密码正确

set @IsLogin='0'

end

else

begin

---用户密码错误

set @IsLogin='2'

end

end

end

else

begin

---不存在受限时间的

if @PassWord=@UserPassWord

begin

---用户密码正确

set @IsLogin='0'

end

else

begin

--用户密码错误

set @IsLogin='2'

end

end

end

---其他操作

insert into SysUserLog(UserAccount,UserPassWord,IPAddress,MacAddress,CreateDate,IsLogin)

values(@UserAccount,@UserPassWord,@IPAddress,@MacAddress,getdate(),@IsLogin)

if @@error=0

begin

---查询最近这个用户最近三条数据,如果在15分钟内,连续输入错误密码3次,则修改用户表中LimitBeginDate字段

if @IsLogin='2'

begin

declare @strTemp nvarchar(20)

set @strTemp=''

select top 3 @strTemp=@strTemp+IsLogin from SysUserLog where UserAccount=@UserAccount and CreateDate>dateadd(mi,-15,getdate()) order by CreateDate desc

if @strTemp='222'

update SysUser set LimitBeginDate=getdate() where UserAccount=@UserAccount

end

select @IsLogin as Flag

end

else

begin

---验证错误

select '4' as Flag

end

end

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