Для аутентификации учетной записи Application Express: применяется к учетным записям конечных пользователей, созданным с использованием интерфейса управления учетными записями конечных пользователей Application Express.
Войдите в рабочее пространство Internal
и перейдите к Manage Instance > Security > Authentication Control
, перейдите к Development Environment Settings
и установите для Require User Account Expiration and Locking
значение Да.
Я надеюсь, что для пользовательской аутентификации вы можете регистрировать попытки недопустимых пользователей в таблице журнала и ограничивать / блокировать пользователей на основе количества последовательных недопустимых попыток входа в систему. .
Ниже приведен пример кода на основе ссылки при условии
Создайте таблицу USER_LOG для регистрации недопустимых попыток, как показано ниже
create table USER_LOG (username varchar2(4000),
login_failed_count number, updated_on date);
Измените существующий table1
и добавьте флаг (Y - Да, пользователь заблокирован, N - Нет, пользователь не заблокирован) для блокировки пользователя, как показано ниже.
Alter table table1 add is_locked varchar2(1) default 'N';
После внесения вышеуказанных изменений вы можете попробовать выполнить приведенную ниже обновленную процедуру, приведенную в ссылке.
create or replace function Table1Authenticate( p_username varchar2, p_password varchar2 ) return boolean is
i integer;
l_rcnt number;
l_failed_cnt number;
l_max_failed_cnt number :=4;
l_lock_flag varchar2(1);
begin
select count(1) into l_rcnt
from table1 t1
where t1.username = p_username
and t1.password = p_password;
if (l_rcnt > 0) then
select is_locked into l_lock_flag from table1 where username = p_username
and password = p_password;
if (l_lock_flag ='N') then
delete from USER_LOG where username=p_username;
return true;
elsif (l_lock_flag ='Y') then
apex_util.set_custom_auth_status (p_status => 'Account Locked, Exceeded Maximum Attempts..!');
return false;
end if;
else
merge into USER_LOG u
using dual l
on (u.username=p_username)
when matched then
update set login_failed_count=login_failed_count+1,updated_on=sysdate
when not matched then
insert (username,login_failed_count,updated_on) values
(p_username,1,sysdate);
select login_failed_count into l_failed_cnt
from user_log where username =p_username;
if (l_failed_cnt > l_max_failed_cnt) then
update table1 set is_locked='Y' where username=p_username;
end if;
return( false );
end if;
exception when others then
return( false );
end;
Чтобы разблокировать пользователя, обновите is_locked
в table1
с Y
до N
. Пожалуйста, проверьте с несколькими сценариями, прежде чем использовать его. Надеюсь, это поможет вам.
Можно загрузить te сценарий в другой AppDomain и управлять полномочиями второго AppDomain.
Эта ссылка должна запустить Вас:
http://blogs.msdn.com/shawnfa/archive/2005/08/08/449050.aspx
Я использовал Powershell в качестве языка сценариев на окнах сам и нашел, что это очень полезно, и если Вы знакомы с.NET затем ее тем более легче.
Загрузите два документа постраничного справочника здесь, это - все, что необходимо будет начать.
Но да можно использовать Систему.NET. Пространство имен IO для выполнения операций IO через Powershell
то же отправило # эта ссылка