0

我正在开发一个票务应用程序并使用以下功能使用自定义身份验证。

create or replace FUNCTION f_val_leave_user_issue(p_username IN VARCHAR2,
                                            p_password IN VARCHAR2)
  RETURN BOOLEAN IS
  lv_char CHAR(1);
  lv_cnt NUMBER;
BEGIN
  SELECT 'x'
  INTO   lv_char
  FROM   p_it_people
  WHERE  upper(p_username) = upper(person_username)
  AND    p_password = person_password;
  apex_util.set_authentication_result(0);
  RETURN TRUE;

EXCEPTION
  WHEN OTHERS THEN
    apex_util.set_authentication_result(4);
    RETURN FALSE;
END f_val_leave_user_issue;

到目前为止,它从我在登录页面中使用的 p_it_people 表中获取用户名和密码。

我可以进一步自定义它,以便每当在 p_it_people 中创建新用户时,都会提示该用户设置自己的密码,并且在设置后,该密码会自动存储在 p_it_people 表中?

4

1 回答 1

1

您需要确保不要将数据库中的密码保存为明文。我建议阅读这篇博文:https ://blogs.oracle.com/apex/custom-authentication-and-authorization-using-built-in-apex-access-control-a-how-to

您只需将密码的哈希值保存在数据库中,每次用户登录时,您都需要对其密码进行哈希处理并比较两个哈希值。

重置密码只是允许最终用户更改他保存的哈希密码。

于 2020-05-09T20:33:11.337 回答