Benutzerdefinierte Authentifizierung in Oracle APEX
2. Die Default-Authentifikation vom APEX
Wenn Sie eine Applikation Oracle APEX erstellen, wird die Default-Login-Seite mit der Seitszahl(page number) 101 erstellt. Das Default-Login benutzt die APEX Authentifikation,d.h Sie sollen username und password eingeben, die durch APEX Admin erstellt werden. Falls Sie ein eigene Tabelle zur Informtionsspeicherung haben, sollen Sie die Authentifikation anpassen
OK das ist die Default login Seite, die erstellt wird:
3. SQL Script
Vor der Durchführung des Beispiel sollen Sie Script laufen um die Tabelle um die Benutzersinformation zu speichern und die Package um das Login zu behandeln.
Die Tabelle USER_ACCOUNT erstellen
create table USER_ACCOUNT
(
USER_NAME VARCHAR2(30) not null,
PASSWORD VARCHAR2(30) not null,
USER_TYPE VARCHAR2(10) not null,
ACTIVE VARCHAR2(1) not null,
EMAIL VARCHAR2(64) not null,
FULL_NAME VARCHAR2(64) not null
) ;
alter table USER_ACCOUNT
add constraint USER_ACCOUNT_PK primary key (USER_NAME) ;
alter table USER_ACCOUNT
add constraint USER_ACCOUNT_UK unique (EMAIL) ;
-----------------------------------
insert into user_account (USER_NAME, PASSWORD, USER_TYPE,
ACTIVE, EMAIL, FULL_NAME)
values ('tom', 'tom123', 'admin', 'Y', 'tom@example.com', 'Tom');
insert into user_account (USER_NAME, PASSWORD, USER_TYPE,
ACTIVE, EMAIL, FULL_NAME)
values ('jerry', 'jerry123', 'user', 'Y', 'jerry@example.com', 'Jerry');
insert into user_account (USER_NAME, PASSWORD, USER_TYPE,
ACTIVE, EMAIL, FULL_NAME)
values ('donald', 'donald123', 'guest', 'N', 'donald@example.com', 'Donald');
Commit;
PKG_SECURITY
Create Or Replace Package Pkg_Security Is
Function Authenticate_User(p_User_Name Varchar2
,p_Password Varchar2) Return Boolean;
-----
Procedure Process_Login(p_User_Name Varchar2
,p_Password Varchar2
,p_App_Id Number);
End Pkg_Security;
/
Create Or Replace Package Body Pkg_Security Is
Function Authenticate_User(p_User_Name Varchar2
,p_Password Varchar2) Return Boolean As
v_Password User_Account.Password%Type;
v_Active User_Account.Active%Type;
v_Email User_Account.Email%Type;
Begin
If p_User_Name Is Null Or p_Password Is Null Then
-- Write to Session, Notification must enter a username and password
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'Please enter Username and password.');
Return False;
End If;
----
Begin
Select u.Active
,u.Password
,u.Email
Into v_Active
,v_Password
,v_Email
From User_Account u
Where u.User_Name = p_User_Name;
Exception
When No_Data_Found Then
-- Write to Session, User not found.
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'User not found');
Return False;
End;
If v_Password <> p_Password Then
-- Write to Session, Password incorrect.
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'Password incorrect');
Return False;
End If;
If v_Active <> 'Y' Then
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'User locked, please contact admin');
Return False;
End If;
---
-- Write user information to Session.
--
Apex_Util.Set_Session_State('SESSION_USER_NAME'
,p_User_Name);
Apex_Util.Set_Session_State('SESSION_EMAIL'
,v_Email);
---
---
Return True;
End;
--------------------------------------
Procedure Process_Login(p_User_Name Varchar2
,p_Password Varchar2
,p_App_Id Number) As
v_Result Boolean := False;
Begin
v_Result := Authenticate_User(p_User_Name
,p_Password);
If v_Result = True Then
-- Redirect to Page 1 (Home Page).
Wwv_Flow_Custom_Auth_Std.Post_Login(p_User_Name -- p_User_Name
,p_Password -- p_Password
,v('APP_SESSION') -- p_Session_Id
,p_App_Id || ':1' -- p_Flow_page
);
Else
-- Login Failure, redirect to page 101 (Login Page).
Owa_Util.Redirect_Url('f?p=&APP_ID.:101:&SESSION.');
End If;
End;
End Pkg_Security;
/
4. Application Items erklären
Klicken Sie auf "Shared Component", hier erlaut es Sie bei der Erklärung von "Application Items", Das sind die items, die in Ihrer Applikation benutzt werden
Geben Sie ein Application Items mit dem Name von "LOGIN_MESSAGE" ein, seine Wert ist das Attribut "LOGIN_MESSAGE" von Session, Sie können seine Wert in PL/SQL einstellen:
Apex_Util.Set_Session_State('LOGIN_MESSAGE'
,'User not found');
Ähnlich erstellen Sie 2 Application Items mehr:
- SESSION_USER_NAME
- SESSION_EMAIL
5. Die Authentifikation anpassen
Öffnen Sie die Seite LOGIN auf APEX Page Designer:
Region hinzufügen:
Das Attribut für das erstellte Region ändern
Die Anzeigenbedingungen von Region einstellen
Zunächst sollen Sie die Code zur Prozess-behandlung ändern wenn der Benutzer auf Submit klicken.
- PL/SQL Code:
Pkg_Security.Process_Login(:P101_USERNAME,
:P101_PASSWORD,
:APP_ID);
Speichern und die Applikation wieder laufen.
Anleitungen Oracle APEX
- Was ist Oracle Application Express?
- Installieren Sie Oracle Apex 5.0
- Installieren Sie Oracle REST Data Services (ORDS) für Oracle APEX
- Die Anleitung zum Oracle APEX für den Anfänger(APEX 5.0)
- Die Anleitung zu Oracle APEX Tabular Form
- Die Anleitung zu Oracle APEX Master Details
- Benutzerdefinierte Authentifizierung in Oracle APEX
- Die Anleitung zu Oracle APEX Dynamic Action
- Dynamische Inhaltsregion in Oracle APEX erstellen (PL / SQL Dynamic Content)
- Was ist Business Intelligence?
- Installieren Sie Oracle BI 11g
Show More