安全(SecurityController)¶
提供 KMS 知识管理模块「安全域」的能力:当前用户注销登录,并清除 SSO 与本地登录相关 Cookie。本控制器仅有 1 个端点。
- 接口类型:REST 资源(
@RestController,方法未声明produces,由全局消息转换器按 JSON 处理) - 基址:
${myapps.context-path.kms:}/api(类级@RequestMapping仅声明单一前缀) - Tag:kms安全模块
公共说明¶
- 鉴权(据源码
KmsMvcConfig+KmsSecurityFilter):KmsMvcConfig注册全局 Servlet 过滤器KmsSecurityFilter(URL 模式/*,context-path 为/时为/kms/*)。本控制器路径/api/runtime/logout不在KmsSecurityFilter.isExcludeURI的豁免名单内(豁免仅覆盖/login.*、/admin、/domain.*、/tray/service、/authtime、service/OfficeServer、.*outsideshare/.*/preview、静态资源后缀、actuator/health等)。过滤器调用Security.getUserIdFromToken(request),取不到用户则返回 HTTP401。因此本端点需 accessToken,可通过以下任一方式传递(据Security.getUserIdFromToken):query 参数accessToken、query 参数access_token(移动端)、请求头accessToken、CookieaccessToken、请求头Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。 - 执行用户:控制器内继承自
AbstractBaseController的session、response字段由 Spring 注入;本端点不调用getUser()。 - 响应结构:统一
Resource(见 ../index.md「统一响应结构」),字段为errcode/errmsg/data/errors。data由AbstractBaseController.Resource构造器执行ESAPI.encode(data)做 XSS 编码。
1. 用户注销¶
注销当前用户:使 HTTP Session 失效,并清除一系列登录态 Cookie(SSO 登录账号、域名、邮箱、verify_login、autologin、accessToken、isFromLogin 等)。若平台认证类型为 SSO,返回 SSO 注销跳转地址;否则返回空串。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/runtime/logout(完整:{kms-context}/api/runtime/logout) - 鉴权:是(需 accessToken,据源码)
- Tag:kms安全模块
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource。
data:String,SSO 模式下为 Web.SSO_LOGOUT_REDIRECT 配置的跳转地址;非 SSO 模式下为空串 ""。
成功示例:
说明:本端点会主动
session.invalidate()并清除accessToken等 Cookie,调用方在收到响应后通常需跳转至登录页;服务端不返回 HTTP 4xx 状态码(仅在KmsSecurityFilter层因缺失 accessToken 时返回 HTTP 401)。