使用profile的PASSWORD_VERIFY_FUNCTION参数实现自定义的密码验证规则
2007-11-07 11:39
766 查看
profile的PASSWORD_VERIFY_FUNCTION参数,允许我们在创建用户或者更改用户
密码时实施自定义的密码验证规则。
1.首先,我们需要创建一个自己的实现密码验证规则的函数,该函数必须创建在sys模式
下,而且必须有三个类型为varchar2的输入参数,第一个参数,包含我们要修改的用户名,第
二个参数包含新密码,第三个参数包含旧密码,并且返回类型为布尔类型。
举一个简单的例子,如果我们需要使密码最少保持6位,并在用户修改密码时在
sys.passwd_changed表中记录用户的旧密码和新密码:
首先创建表passwd_changed:
SQL> conn sys/*** as sysdba
Connected.
SQL> create table passwd_changed
2 (
3 user_name varchar2(20) ,
4 old_passwd varchar2(100) ,
5 new_passwd varchar2(100)
6 )
7 ;
Table created.
创建实现密码自定义规则的函数my_password_verify:
SQL> CREATE OR REPLACE FUNCTION my_password_verify (username VARCHAR2 ,password VARCHAR2 ,old_password VARCHAR2 ) RETURN BOOLEAN IS
2 BEGIN
3 IF LENGTH(password) < 6 THEN
4 raise_application_error(-20001,'Password must be at least 6 characters long');
5 END IF;
6 INSERT INTO passwd_changed VALUES(username,old_password,password);
7 RETURN(TRUE);
8 END;
9 /
Function created.
2.创建profile实施自定义密码验证规则:
SQL> create profile TEST_PROFILE limit
2 password_verify_function MY_PASSWORD_VERIFY;
Profile created.
3.使用我们创建的profile:TEST_PROFILE 创建用户test_user,密码为test,看看会发生
什么:
SQL> create user test_user
2 identified by test
3 default tablespace USERS
4 temporary tablespace temp
5 profile TEST_PROFILE;
create user test_user
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20001: Password must be at least 6 characters long
可以看到,我们自定义的密码验证规则已经生效,密码:test长度小于6位时,创建用户失败。
4.我们修改密码为test12,重新创建用户test_user:
SQL> create user test_user
2 identified by test12
3 default tablespace USERS
4 temporary tablespace temp
5 profile TEST_PROFILE;
User created.
密码:test12长度等于6位时,创建用户成功。
5.检查sys.passwd_changed表数据:
SQL> select * from sys.passwd_changed;
USER_NAME OLD_PASSWD NEW_PASSWD
-------------------- -------------------------
TEST_USER TEST12
6.更改test_user的密码为test,看看是否可以成功:
SQL> alter user test_user identified by test;
alter user test_user identified by test
ORA-28003: password verification for the specified password failed
ORA-20001: Password must be at least 6 characters long
7.更改test_user的密码为test123,看看是否可以成功:
SQL> alter user test_user identified by test123;
User altered
8.检查sys.passwd_changed表数据:
SQL> select * from sys.passwd_changed;
USER_NAME OLD_PASSWD NEW_PASSWD
-------------------- -------------------------
TEST_USER TEST12
TEST_USER TEST123
密码时实施自定义的密码验证规则。
1.首先,我们需要创建一个自己的实现密码验证规则的函数,该函数必须创建在sys模式
下,而且必须有三个类型为varchar2的输入参数,第一个参数,包含我们要修改的用户名,第
二个参数包含新密码,第三个参数包含旧密码,并且返回类型为布尔类型。
举一个简单的例子,如果我们需要使密码最少保持6位,并在用户修改密码时在
sys.passwd_changed表中记录用户的旧密码和新密码:
首先创建表passwd_changed:
SQL> conn sys/*** as sysdba
Connected.
SQL> create table passwd_changed
2 (
3 user_name varchar2(20) ,
4 old_passwd varchar2(100) ,
5 new_passwd varchar2(100)
6 )
7 ;
Table created.
创建实现密码自定义规则的函数my_password_verify:
SQL> CREATE OR REPLACE FUNCTION my_password_verify (username VARCHAR2 ,password VARCHAR2 ,old_password VARCHAR2 ) RETURN BOOLEAN IS
2 BEGIN
3 IF LENGTH(password) < 6 THEN
4 raise_application_error(-20001,'Password must be at least 6 characters long');
5 END IF;
6 INSERT INTO passwd_changed VALUES(username,old_password,password);
7 RETURN(TRUE);
8 END;
9 /
Function created.
2.创建profile实施自定义密码验证规则:
SQL> create profile TEST_PROFILE limit
2 password_verify_function MY_PASSWORD_VERIFY;
Profile created.
3.使用我们创建的profile:TEST_PROFILE 创建用户test_user,密码为test,看看会发生
什么:
SQL> create user test_user
2 identified by test
3 default tablespace USERS
4 temporary tablespace temp
5 profile TEST_PROFILE;
create user test_user
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20001: Password must be at least 6 characters long
可以看到,我们自定义的密码验证规则已经生效,密码:test长度小于6位时,创建用户失败。
4.我们修改密码为test12,重新创建用户test_user:
SQL> create user test_user
2 identified by test12
3 default tablespace USERS
4 temporary tablespace temp
5 profile TEST_PROFILE;
User created.
密码:test12长度等于6位时,创建用户成功。
5.检查sys.passwd_changed表数据:
SQL> select * from sys.passwd_changed;
USER_NAME OLD_PASSWD NEW_PASSWD
-------------------- -------------------------
TEST_USER TEST12
6.更改test_user的密码为test,看看是否可以成功:
SQL> alter user test_user identified by test;
alter user test_user identified by test
ORA-28003: password verification for the specified password failed
ORA-20001: Password must be at least 6 characters long
7.更改test_user的密码为test123,看看是否可以成功:
SQL> alter user test_user identified by test123;
User altered
8.检查sys.passwd_changed表数据:
SQL> select * from sys.passwd_changed;
USER_NAME OLD_PASSWD NEW_PASSWD
-------------------- -------------------------
TEST_USER TEST12
TEST_USER TEST123
相关文章推荐
- 使用profile的PASSWORD_VERIFY_FUNCTION参数实现自定义的密码验证规则
- Oracle11g R2创建PASSWORD_VERIFY_FUNCTION对应密码复杂度验证函数步骤
- WCF消息安全模式之自定义用户名密码:Message CustomUserNamePassword wsHttpBinding 使用Windows Services宿主以及客户端免证书验证
- Oracle11g R2创建PASSWORD_VERIFY_FUNCTION对应密码复杂度验证函数步骤
- 在SSM中使用shiro实现登录验证(附密码加密)
- android-使用PopupWindow实现随机排列的自定义密码键盘
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- 使用注解和自定义验证实现Spring MVC表单验证(翻译)
- Jquery Validate 相关参数及常用的自定义验证规则
- WCF分布式安全开发实践(3):传输安全模式之自定义用户名密码身份验证:Transport_UserNamePassword_WSHttpBinding
- Silverlight3系列(二)Silverlight3+wcf+在不使用证书的情况下自定义用户名密码验证
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- 使用plupload实现多文件上传,自定义参数
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- 使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
- 使用struts2自定义拦截实现统一的身份验证模式
- 记录:asp.net mvc 中 使用 jquery 实现html5 实现placeholder 密码框 提示兼容password IE6