Oracle apex 为什么赢了';APEX授权方案是否保留存储的用户名?

Oracle apex 为什么赢了';APEX授权方案是否保留存储的用户名?,oracle-apex,Oracle Apex,我的应用程序有一个授权方案,首先检查输入的用户名是否是系统中的用户名,然后检查用户是否有权访问此特定应用程序。我遇到的登录问题是,用户将登录一次,然后被拒绝,并且必须第二次登录,然后才能正常工作。我认为问题在于:APP_用户名在第一次登录尝试时没有存储,然后在第二次登录尝试时存储在应用程序中。我知道一定有办法解决这个问题,但我还没有弄明白 u_id number := null; app_id number := null; auth_id number := null;

我的应用程序有一个授权方案,首先检查输入的用户名是否是系统中的用户名,然后检查用户是否有权访问此特定应用程序。我遇到的登录问题是,用户将登录一次,然后被拒绝,并且必须第二次登录,然后才能正常工作。我认为问题在于:APP_用户名在第一次登录尝试时没有存储,然后在第二次登录尝试时存储在应用程序中。我知道一定有办法解决这个问题,但我还没有弄明白

    u_id number := null;
    app_id number := null;
    auth_id number := null;
    authorized number(1,0) := 0;
    auth_status char := 'f';
    failure_reason varchar2(200) := null;
begin
    begin
        select id into u_id from user where username=:APP_USERNAME;
    exception
        when NO_DATA_FOUND then
            u_id := null;
            failure_reason := 'User not found:' || :APP_USERNAME;
    end;
 
    select id into app_id from lkup_application where name='Application Name';
   
    if (u_id is not null) then
        begin
            select id into auth_id from authorization where application_id = app_id and user_id = u_id;
            exception
                when NO_DATA_FOUND then
                    auth_id := null;
                    failure_reason := 'User not authorized from authorization table.';
        end;
    end if;
   
    if (auth_id is not null) then
        authorized := 1;
        auth_status := 's';
    end if;
    
    insert into access_audit values(null, :APP_USER, app_id, current_timestamp, auth_status, failure_reason);
    commit;
 
    return (authorized = 1);
end;```

嗯,它是
:APP\u USER
,而不是
:APP\u USERNAME
,所以我建议您使用它