全部文档
文档中心先胜云平台单点登录功能介绍登出

登出

用户在系统手动退出(如点击右上角「退出登录」)后,浏览器直接打开一个链接(<a href={hrefUrl}>),请求会带上当前账号中心的 Cookie;前端按环境拼 hrefUrl,实际访问地址如下:

条件

实际访问地址

environment="OP" 且配置了 OPLogoutApiUrl(若需要在退出后调用第三方退出接口,则需配置OPLogoutApiUrl并定开对应接口)

OPLogoutApiUrl?redirect=...(可能还带 enterpriseCode

其他情况(含 SAAS、或未配 OP 登出)

{账号中心}/oauth/login/redirect/logout?redirect=...&enterpriseCode=...

流程一:redirect/logout(常见路径)

redirect 参数由发起退出的前端页面拼入,取值规则如下(拼入 redirect/logout 前通常需 URL 编码,具体以各前端实现为准):

条件

发起退出的页面

redirect 传什么

企业已配置 enterprise_info.logout_url

读到该配置后写入 seeplnOutUrl(或元素 / 应用侧 tenantInfo.logoutUrl),直接作为 redirect(企业登出/第三方退出地址)

未配置企业登出地址

账户中心

{当前站点 origin}{DeepFOS 前缀}/login

未配置企业登出地址

元素 / 应用内

{origin}{DeepFOS 前缀}/login?redirect={当前页 URL 编码};登出后先到登录页,登录成功后可回到退出前页面

  1. 浏览器 GET {账号中心}/oauth/login/redirect/logout?redirect={上表取值}&enterpriseCode={企业编码},携带 Cookie(未配企业登出地址时带 enterpriseCode;已配 seeplnOutUrl 时通常只传 redirect

  2. 后端校验 redirect 白名单(若配置了 logout.domain);若 logout.redirect.url.enable=false,接口返回 401

  3. 后端执行 logout():作废 token;OP 环境sys.environment=OP)且已配置 op.logout.url 时,会先 POST 该地址(body 为 Cookie 中的 userInfo),用于通知外部登出;调用失败不阻断本地登出

  4. 清理账号中心 Cookie

  5. 302 重定向到参数 redirect 指定的地址

登出相关配置项如下(账号中心服务部署时,以 application-lease.properties 等为准):

配置项

写入方式

说明

enterprise_info.logout_url

调接口 POST {账号中心域名}/system-account-api/api/enterprise/update/logout-url?enterpriseId={企业ID}&logoutUrl={登出地址}(需管理员 Cookie/Header)

配置后作为 redirect/logoutredirect 参数(第三方登出或登出后回跳地址);查询:GET .../api/enterprise/get-logout-url

op.logout.url

环境变量 EXPORT_ACCOUNT_OP_LOGOUT_URL

OP 环境走 redirect/logout 时,后端可能 POST 该地址,用于通知外部登出

logout.redirect.url.enable

环境变量 EXPORT_ACCOUNT_LOGOUT_REDIRECT_URL_ENABLE

是否启用 redirect/logout;为 false 时接口返回 401,默认 true

logout.domain

环境变量 EXPORT_ACCOUNT_OP_LOGOUT_DOMAIN

redirect/logoutredirect 的白名单前缀(逗号分隔),不在白名单内则拒绝登出

流程二:OP 且配置了 OPLogoutApiUrl

  1. 浏览器直接打开 OPLogoutApiUrl?redirect=...不经过账号中心 redirect/logout

  2. OPLogoutApiUrl 对应服务自行完成:调用第三方退出接口、清除先胜云 Cookie、执行最终重定向

用户中心 config.json 配置如下:

Copy
{
  "environment": "OP",
  "OPLoginConfig": {
    "OPLogoutApiUrl": "/proinnova_sso/user/logout"
  }
}

若退出后需调用第三方退出接口,须在 Nginx 配置 location /logout,将 /logout 统一转发/改写到 OPLogoutApiUrl 对应地址。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send