我们使用内部oracle数据库身份验证来验证应用程序的用户(在Oracle Forms 11g中)。用户在Oracle Forms 11g提供的默认登录屏幕中输入用户ID,密码和连接描述(附带屏幕截图)。当用户按下CONNECT按钮时,我应该在哪个触发器中放置函数来验证密码限制,例如Oracle Forms中的密码长度等?
非常感谢您的投入
THX
答案 0 :(得分:1)
没有,我猜想。
这看起来像是内置的登录表单。它应该接受凭证,并且 - 如果它们是有效的 - 让你进去。如果它是你自己的形式非常类似于前者,那么你要使用WHEN-VALIDATE-ITEM
(在密码项上) )或WHEN-BUTTON-PRESSED
触发器(在CONNECT按钮上)。
密码策略应在其他地方强制执行,例如以用于创建用户和密码的形式,或者 - 甚至更好 - 在个人资料中强制执行。看一下CREATE PROFILE命令,它也解释了密码参数,其中一个是PASSWORD_VERIFY_FUNCTION
,你可以用它来强制执行不同的条件(比如你所说的最小长度)。
答案 1 :(得分:1)
您可能会获得username
,password
或connection_string
参数'内部oracle数据库身份验证屏幕的值,将它们替换为get_application_property
方法的参数。
ON-LOGON
和ON_ERROR
触发器可用于管理您的任务:
ON-LOGON
的代码文字:
declare
v_cnn varchar2(35):='myDB';
begin
:global.v_lng := 6 ;
:global.v_pwd := get_application_property(password);
if ( length(:global.v_pwd) > :global.v_lng ) then
logon('myschema',:global.v_pwd||'@'||v_cnn);
end if;
end;
ON-ERROR
的代码文字是:
begin
if DBMS_Error_Code = -1017 then
:global.v_pwd := get_application_property(password);
if ( length(:global.v_pwd) < :global.v_lng ) then
message('The length of the Password should be at least '||:global.v_lng||' characters !'); message('');
else
message(DBMS_Error_Text); message('');
end if;
end if;
end;
作为身份验证密码具有特定最小长度的身份验证示例。