2012-12-16 4 views
2

데이터베이스에서 찾을 수있는 계정 만 우리 홈 페이지에 로그인 할 수있는 새 로그인 페이지를 만들었습니다 ... 로그인 버튼을 클릭하면 사용자가 홈 페이지로 리다이렉트 될 것입니다. 새로운 브랜치를 생성하고 조건 탭에서 텍스트 필드에 입력 된 계정의 존재를 확인하는 코드를 넣습니다.하지만 무슨 일이 일어 났습니까? '잘못된 로그인 자격증 명'이라는 오류 메시지가 항상 표시됩니다 ...Oracle Apex - 고유 로그인 페이지 작성

Google에서 입력 한 조건의 코드가 정확합니다. 사용자 이름과 비밀번호가 잘못 표시되었음을 감지 할 수 있습니다. 이 오류가 발생하면 반환하는 오류 메시지를 만들었습니다 ...

,210 여기

가 가
if CHECK_LOGIN(:P111_USERNAME, :P111_PASSWORD) then return true; 
else 
return false; 
end if; 

사람이 일을 우리에게 도움이 될 수 ... check_login 계정이 데이터베이스에서 발견되는 경우는 true를 반환하는 절차입니다 .. 내 조건에서 코드? 미리 감사드립니다.

답변

6

조건부 분기 등이 아니라 사용자 정의 인증 체계가 필요합니다. 새 로그인 페이지를 작성할 필요가 없습니다. 표준 로그인 페이지는 필요한 모든 정보를 담고 있으며 현재 활성 인증 구성표를 사용합니다. 인증 구성표는 공유 구성 요소 아래에 있습니다.

일부 oracle documentation here을 찾을 수 있습니다. 또한 google에서 "oracle apex custom authentication"을 검색 할 때 많은 블로그 게시물을 찾을 수 있습니다! 예를 들어 This post by Martin D'Souza이 흥미 롭습니다.

또한 사용자 지정 구성표를 만들 때 항목 레이블을 클릭하여 도움말을 볼 수 있습니다. 예를 들어,이 인증 함수 이름 도움말에 있습니다

들이 로그인 페이지에 입력 한 후, 사용자의 사용자 이름 과 암호를 확인합니다 함수의 이름을 지정합니다. 을 입력하지 않으면 모든 사용자 이름/비밀번호를 허용합니다. 기능 자체는 패키지 내의 인증의 'PL/SQL 코드'텍스트 영역 에 정의되거나 저장 함수로 정의 될 수 있습니다.

이 함수는 을 호출하는 로그인 프로 시저에 부울을 반환해야합니다. 최종 사용자가 로그인 페이지에 입력 한 값에 액세스하기 위해 을 사용할 수있는 'p_username'및 'p_password'입력 매개 변수가 2 개 있습니다.

는 예를 들어, 'PL/SQL 코드'텍스트 영역 '인증 기능'등

function my_authentication (
    p_username in varchar2, 
    p_password in varchar2) 
    return boolean 
is 
    l_user my_users.user_name%type := upper(p_username); 
    l_pwd my_users.password%type; 
    l_id my_users.id%type; 
begin 
    select id , password 
     into l_id, l_pwd 
     from my_users 
    where user_name = l_user; 

    return l_pwd = rawtohex(sys.dbms_crypto.hash (
         sys.utl_raw.cast_to_raw(p_password||l_id||l_user), 
         sys.dbms_crypto.hash_md5)); 
exception 
    when NO_DATA_FOUND then return false; 
end; 

my_authentication 

에 다음 코드를 입력합니다.

함수에 매개 변수 p_username 및 p_password가 필요합니다.

다른 입력란을 비워두면 기본 기능으로 처리됩니다.