文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

APEX如何通过数据库中用户信息验证登陆

2024-04-02 19:55

关注

小编给大家分享一下APEX如何通过数据库中用户信息验证登陆,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1.  Custom Authentication in Oracle APEX

1.1.  Introduction

This document is based on:

·       Oracle APEX 5.0

·       Oracle APEX 5.1.4 测试可用

1.2.  Default authentication of APEX

APEX默认登录页是101,默认验证方式APEX用户验证。本文主要测试通过数据库中用户信息进行验证登陆。

1.3.  SQL Script

1)      创建用户信息表USER_ACCOUNT 

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;

2)      创建存储过程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;

/

1.4.  Declaring Application Items

3)      在应用程序中,点击“共享组件”》“应用程序项”;

应用程序项定义:

使用应用程序项可以维护会话状态。应用程序项可以通过使用计算, 处理或在 URL 中传递值来设置。使用 "新建实例时" 计算可以为会话设置一次项值。使用应用程序项可以维护未显示并且未指定给任何页的会话状态。

4)      点击“创建”按钮:

输入对应属性值:

     名称:LOGIN_MESSAGE

     范围:Application

然后点击右上方“创建应用程序项”;

应用程序项可在后期被PL/SQL中调用,

如:Apex_Util.Set_Session_State('LOGIN_MESSAGE','User not found');

同样,再创建两个应用程序项:

·       SESSION_USER_NAME

·       SESSION_EMAIL

1.5.  Custom Authentication

5)      在应用程序中编辑“登录页”,登录页页码为101;

6)      右击“Content Body”创建新区域。

7)      选中新区域,修改属性值:

     标识》LOGIN_MESSAGE

     标识》类型:静态内容

     源》文本:&LOGIN_MESSAGE.    注意结尾带”.”,如没有将不能返回变量值。

     服务端条件》类型:项不为空值

     服务端条件》项:选择应用程序项:LOGIN_MESSAGE

8)      左侧导航栏切换到“处理“标签页,替换”处理“》”处理“》”Login”,修改其中“源”》“PL/SQL 代码”,

默认值:--apex_authentication.login(p_username => :P101_USERNAME,p_password => :P101_PASSWORD );

替换值:Pkg_Security.Process_Login(:P101_USERNAME,:P101_PASSWORD,:APP_ID);

9)      保存并运行测试;

附测试表中用户信息

用户名            用户密码  用户状态

tom                tom123             Y

jerry                jerry123                        Y

donald            donald123        N

看完了这篇文章,相信你对“APEX如何通过数据库中用户信息验证登陆”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯