您的位置:首页 > 其它

使用profile的PASSWORD_VERIFY_FUNCTION参数实现自定义的密码验证规则

2011-11-02 13:30 483 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐