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了
---用户登录系统
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了
相关文章推荐
- SQL Server 2000/2005检测存储过程名是否存在,存在删除
- sql server 判断表/视图/存储过程是否存在
- sql server 判断表/视图/存储过程是否存在
- SQL SERVER 删除前先判断指定的表或者存储过程是否存在
- sqlserver存储过程验证用户登录和账号是否停用或者被其他人登录中--写给新人
- sql server 判断表/视图/存储过程是否存在
- sql server 判断表/视图/存储过程是否存在
- sql server 判断表/视图/存储过程是否存在[转]
- SQL Server 2000/2005检测存储过程名是否存在,存在删除
- 在SQL Server 2008 存储过程中拼接字符串时,若存在varchar和数值型则varchar自动转化为数值型
- MS sql server 判断表/视图/存储过程是否存在
- 无刷新验证用户是否存在
- Ajax实现异步验证用户是否存在
- sql 判断 函数 存储过程是否存在的方法
- ajax验证用户是否存在
- sql 判断 函数 存储过程是否存在的方法
- 如何验证会员系统中用户的邮箱是否真实存在
- SQL SERVER中用存储过程验证登陆正确性
- struts2+jquery验证注册用户是否存在
- 删除前先判断指定的表或者存储过程是否存在if exists