原文地址: https://blog.cloudnueva.com/dynamic-post-logout-urls-in-apex # 在 APEX 中实现动态登出后跳转 URL ![Dynamic Post-Logout URLs in APEX](https://blog.cloudnueva.com/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1765763034810%2Fb9995646-2c45-4cc0-9fdb-4fc73a7ebef3.png&w=3840&q=75) ## 背景 使用社交登录等单点登录认证方案时,需要在 APEX 中定义登出后跳转 URL(Post-Logout URL),以便认证提供者在完成登出后将应用重定向到公共页面。不同环境(DEV/TEST/PROD)的实例 URL 不同,导致登出 URL 需要随部署环境手动修改。 ![典型 APEX 社交登录登出流程](https://cdn.hashnode.com/res/hashnode/image/upload/v1765731692645/8710db64-4e38-4fd1-b788-c80fef8bb179.png) ## 解决方案 ### 1. 创建应用项 创建名为 `AI_POST_LOGOUT_URL` 的应用项存储登出 URL: ![AI_POST_LOGOUT_URL 应用项](https://cdn.hashnode.com/res/hashnode/image/upload/v1765732318966/7a915a63-5a5d-4fe8-8033-f850ce4ebb2d.png) ### 2. 创建应用设置 创建名为 `POST_LOGOUT_URL` 的应用设置,并启用升级保留值选项: ![应用设置存储登出URL](https://cdn.hashnode.com/res/hashnode/image/upload/v1765732418165/8c9b88ec-9270-4ccd-9ad1-7d07c88ae9e7.png) ### 3. 会话初始化时填充应用项 在「认证后」应用流程中设置应用项值: ```sql BEGIN apex_session_state.set_value (p_item => 'AI_POST_LOGOUT_URL', p_value => apex_app_setting.get_value('POST_LOGOUT_URL')); END; ``` ![认证后流程设置应用项](https://cdn.hashnode.com/res/hashnode/image/upload/v1765732791460/b4b5f71c-fe29-48e5-81f7-cd2cf3a1f219.png) ### 4. 配置认证方案 将认证方案的登出URL设置为应用项值: ![配置认证方案登出URL](https://cdn.hashnode.com/res/hashnode/image/upload/v1765732929336/a734c6a4-03ed-4df5-b659-b8af966f4615.png) ## 替代方案 可使用自定义表存储各环境URL,但应用设置更符合APEX标准且安全可控。 ## 结论 该方案有效解决了社交登录场景下登出URL的跨环境动态配置问题,消除了部署时的手动修改步骤。