跳转至

LogoutController(注销控制器)

cn.myapps.signon.auth.controller.LogoutController,类级 @RequestMapping("${myapps.context-path.signon:}")。提供前台用户注销:失效 session、清空登录相关 cookie 与 SSO cookie,并返回注销后应跳转的 URL。

控制器基址:${myapps.context-path.signon:}(部署时替换;lite 统一打包下前缀多一层 /signon)。下列「请求路径」为相对基址的路径。完整 URL = {signon-context}<相对路径>

鉴权:本控制器端点位于认证服务内,不要求 accessToken。/api/logout.action 不在 PassFilter 白名单(白名单含 /api/runtime/logout/runtime/logout 等通用注销路径,但不含 /api/logout.action),但 CommonSecurityFilter 不做 token 校验,仍可匿名访问(详见 index.md 鉴权说明)。

响应形态:本控制器是 signon 模块**唯一使用统一 Resource 结构**的控制器,由 new Resource(0, errmsg, data, null) 构造。


1. 注销登录

失效当前 session、清除登录 cookie(含 SSO cookie),返回注销重定向 URL。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/api/logout.action(完整:{signon-context}/api/logout.action
  • 鉴权:否
  • Tag:signon(控制器未声明 @Tag

请求参数

无。

请求示例

POST /api/logout.action HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。data 为注销后应跳转的 URL 字符串,由 getLogoutRedirect 计算:

  • authentication.type=sso 时:取 sso.logout.redirect 配置,并附带 ?service=https%3A%2F%2Fauditms-uat.haid.com.cn%2Fsignon%2Fapi%2Flogin%2Fsso(注:service 参数为源码硬编码)。
  • 否则:<contextPath> + getDispatchURL("/", request, response)(dispatch 会按 session 内 SKINTYPE 替换为 H5 等)。

注销副作用(由 LoginHelper.logout 执行):session.invalidate();清空 cookie verify_loginautologinaccessTokenisFromLogin,以及 sso.info.key.* 系列配置键对应的 SSO cookie。

成功示例

{ "errcode": 0, "errmsg": "ok", "data": "/portal/", "errors": null }

注:控制器 getLoginUser 方法签名为 throws Exception,未捕获异常;若 session 已失效或 cookie 清理失败,异常将经 CommWebMvcConfig 注册的全局异常解析器 CommonsExceptionResolver 处理(不返回统一 Resource)。