我需要检查数据库用户是否有效。
我将允许用户使用以下方式更改密码ALTER命令,但在执行此操作之前,我想验证他们当前的密码,以确保他们的身份与他们所说的一致。是否可以在 pl/sql 内部获取用户/密码组合并检查其是否有效?
我认为 Oracle 数据库没有为您提供执行此操作的 API。您可以使用的一种方法是使用环回数据库链接来检查它。像这样:
DECLARE
p_username VARCHAR2 (30) := 'MMCP'; -- Change to the user whose password you are validating
p_test_password VARCHAR2 (30) := 'NOT_MY_PASSWORD';
p_loopback_connection_string VARCHAR2(80) := 'ORCLQA'; -- Change this for your environment
BEGIN
BEGIN
EXECUTE IMMEDIATE q'[drop database link password_test_loopback]';
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
EXECUTE IMMEDIATE
'create database link password_test_loopback connect to "' || p_username || '" identified by "' || p_test_password || '" using ''' || p_loopback_connection_string || '''';
EXECUTE IMMEDIATE q'[SELECT * FROM dual@password_test_loopback]';
EXECUTE IMMEDIATE q'[drop database link password_test_loopback]';
dbms_output.put_line('Password is good');
EXCEPTION WHEN OTHERS THEN
IF SQLCODE = -1017 THEN
DBMS_OUTPUT.PUT_LINE('Password is wrong');
ELSE
raise;
END IF;
END;
更高级的选项是找到一种使用单点登录/LDAP 进行 Oracle 身份验证的方法。然后,您的问题就变成了——如何验证 LDAP 字典中的用户名/密码,这要容易得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)