【发布时间】:2020-02-28 02:34:04
【问题描述】:
我试图避免用户在不同的计算机上登录。
我想创建一个登录视图,如果用户已经登录并且您尝试使用该用户登录,应用程序将显示一条消息“用户已登录”,并且可以选择使用链接关闭打开的会话或按钮。
编辑: Apex 版本 5.1.1.00.08,无法更新此版本。
我尝试了多种方法来关闭会话,但到目前为止都没有奏效。
第一步:
创建用于注销的 url。
我正在从表 apex_workspace_sessions
中获取 APEX_SESSION_IDhttp://xxxxxxxx.com/apex/apex_authentication.logout?p_app_id=100&p_session_id=APEX_SESSION_ID
但是当我打开链接时,它并没有注销具有该 APEX_SESSION_ID
的用户第二次行动:
我尝试创建一个函数来注销从表 apex_workspace_sessions 中提取 APEX_SESSION_ID 的会话,但生成此错误也无法正常工作:
ORA-06550:第 2 行,第 11 列:PLS-00328:必须为 DELETE_SESSION 的前向声明定义子程序主体。 ORA-06550:第 6 行,第 16 列:PLS-00302:组件“DELETE_SESSION”必须声明 ORA-06550:第 6 行,第 3 列:PL/SQL:语句被忽略
代码:
declare
procedure delete_session (p_session_id in number default wwv_flow.g_instance );
begin
apex_session.delete_session (
p_session_id => APEX_SESSION_ID );
end;
图像中的 p_session_id 是 APEX_SESSION_ID 已存在于表 apex_workspace_sessions
第三次行动:
我尝试运行查询
DELETE FROM APEX_050000.wwv_flow_sessions$ WHERE ID = APEX_SESSION_ID;
显示错误:ORA-00942:表或视图不存在
和查询
DELETE FROM apex_workspace_sessions WHERE APEX_SESSION_ID = APEX_SESSION_ID;
显示错误:ORA-01031: 权限不足
第四步:
我尝试使用官方 oracle 文档中的 LOGOUT PROCEDURE,但也没有用
apex_authentication.logout(APEX_SESSION_ID, :APP_ID);
没有错误或任何可显示的内容。
有谁知道如何从另一台计算机上注销用户?
谢谢
【问题讨论】:
-
有时了解某人为何尝试做某事有助于选择正确的实现。你为什么要这样做?他们在不同的计算机或浏览器上登录有什么关系?
-
我不想让一个用户在不同的计算机上登录多个会话,一个用户只有一个会话,有点像 web whastapp,安全问题,谢谢@DanMcGhan
标签: oracle oracle-apex oracle12c