博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
密码策略限制最大与最小长度
阅读量:4677 次
发布时间:2019-06-09

本文共 2071 字,大约阅读时间需要 6 分钟。

需要为程序加一些功能,如下表,这些设置可让管理员根据自己实际情况设置,缺省值为0不作任限制。

 

由于不是全新开发,而是在现在有程序补充功能,Insus.NET不想在程序作过多更改,只好修改存储过程来实现它们。现下面把实现上图highlight的选项功能分享出来。

保持密码原有记录值,只要管理员设置了密码策略之后,用户更改自己的密码时,就会应用到了新密码策略。

首先写一个获取参数值的自定义函数:

ExpandedBlockStart.gif
udf_GetPasswordParameterValue
SET ANSI_NULLS 
ON
GO
SET QUOTED_IDENTIFIER 
ON
GO
--
 =============================================
--
 Author:        Insus.NET
--
 Create date: 2012-02-05
--
 Description:    Get Password Parameter Value
--
 =============================================
CREATE 
FUNCTION 
[
dbo
].
[
udf_GetPasswordParameterValue
] 
(
    
@PasswordParameterId 
TINYINT
)
RETURNS 
TINYINT
AS
BEGIN
    
DECLARE 
@ReturnValue 
TINYINT
    
SELECT 
@ReturnValue 
= 
[
ParameterValue
] 
FROM 
[
dbo
].
[
PasswordParameter
] 
WHERE 
[
PasswordParameterId
] 
= 
@PasswordParameterId
    
Return 
@ReturnValue
END
GO

 

接下来,Insus.NET要修改有更改密码的的存储过程:

ExpandedBlockStart.gif
usp_Users_UpdatePassword
SET ANSI_NULLS 
ON
GO
SET QUOTED_IDENTIFIER 
ON
GO
--
 =============================================
--
 Author:        Insus.NET
--
 Create date: 2008-12-26
--
 Update date: 2012-06-05 23:11:19
--
 Description:    Update User Password
--
 =============================================
ALTER 
PROCEDURE 
[
dbo
].
[
usp_Users_UpdatePassword
]
(
    
@ID 
INT,
    
@OldPassword 
nvarchar(
30),
    
@Password 
nvarchar(
30)
)
AS    
--
判断用户输入的密码是否正确
IF 
NOT 
EXISTS(
SELECT 
TOP 
1 
* 
FROM 
[
Users
] 
WHERE 
[
Password
] 
= 
@OldPassword 
AND 
[
UsersId
] 
= 
@ID)
BEGIN
    
RAISERROR(N
'
旧密码输入不正确,无法更新!
',
16,
1)
    
RETURN
END
--
下面两个变量,是从密码策略表获取最小长度与最大长度值
DECLARE 
@PasswordLengthMin 
TINYINT 
= 
[
dbo
].
[
udf_GetPasswordParameterValue
](
3)
DECLARE 
@PasswordLengthMax 
TINYINT 
= 
[
dbo
].
[
udf_GetPasswordParameterValue
](
4)
--
如果大于0,说明设置了密码最小长度策略
IF 
@PasswordLengthMin 
> 
0 
AND 
LEN(
@Password
< 
@PasswordLengthMin
BEGIN
    
RAISERROR(N
'
密码最小长度必须大于或等于%d字符。
',
16,
1,
@PasswordLengthMin)
    
RETURN
END
--
如果大于0,说明设置了密码最大长度策略
IF 
@PasswordLengthMax 
> 
0 
AND 
LEN(
@Password
> 
@PasswordLengthMax
BEGIN
    
RAISERROR(N
'
密码最大长度必须小于或等于%d字符。
',
16,
1,
@PasswordLengthMax)
    
RETURN
END
--
更新密码
UPDATE 
[
Users
] 
SET 
[
Password
] 
= 
@Password 
WHERE 
[
UsersId
] 
= 
@ID

 

 

转载于:https://www.cnblogs.com/insus/archive/2012/02/06/2339624.html

你可能感兴趣的文章
第二章
查看>>
实现表单元素与文字的居中对齐
查看>>
vuex
查看>>
swift上传图片
查看>>
struts2常量的配置
查看>>
【设计模式】原型模式
查看>>
【监控】WebServer入库与缓存更新代码优化小计
查看>>
[洛谷P5174]圆点
查看>>
Spark BlockManager的通信及内存占用分析(源码阅读九)
查看>>
AJAX 局部刷新 GridView 进行数据绑定
查看>>
OpenCV学习(一)基础篇
查看>>
windows 编程中的常见bug
查看>>
焦点图下面的索引小圆环
查看>>
C++动态分配指针数组
查看>>
NOSql之redis的学习
查看>>
[SoapUI] 通过Groovy写文本文件
查看>>
[Training Video - 7] [Database connection] Part 1
查看>>
springMvc入门教程2(集成mybatis和参数绑定)
查看>>
[SRM] 10 CCZ的诗
查看>>
附2 rabbitmq用户管理、角色管理与权限管理
查看>>