oracle - Oracle 顶点功能向用户发送选项以设置密码
问题描述
我正在开发一个票务应用程序并使用以下功能使用自定义身份验证。
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 表中?
解决方案
您需要确保不要将数据库中的密码保存为明文。我建议阅读这篇博文:https ://blogs.oracle.com/apex/custom-authentication-and-authorization-using-built-in-apex-access-control-a-how-to
您只需将密码的哈希值保存在数据库中,每次用户登录时,您都需要对其密码进行哈希处理并比较两个哈希值。
重置密码只是允许最终用户更改他保存的哈希密码。
推荐阅读
- javascript - createStore 与 combineReducers 和 applyMiddleware 没有第二个参数
- python - 使用 Automator 运行 Python 脚本 // 为什么它仅在我包含 export PATH=/usr/local/bin:$PATH 时才有效,这是什么意思?
- reactjs - 如何使用嵌套对象更改状态挂钩?
- amazon-web-services - 为什么 AWS Auto Scaling 午餐配置不允许加密根卷?
- list - Prolog:将谓词应用于所有列表元素并对结果求和
- c++ - std::_Bit_rerefence& 类型的非常量引用的初始化无效
- javascript - 从 html oninput() 事件调用 javascript 中的对象方法
- javascript - 无法更改:使用 JavaScript 悬停 CSS 属性
- flutter - 来自 Json 的 Flutter 中的多个复选框
- node.js - 使用 axios 发布请求时出现网络错误