跳转至

设计时登录与注销(LoginDesignTimeController)

设计器服务的登录与注销:登录校验账号密码(连续错误超过阈值后强制校验图形验证码,错误 10 次以上锁定 30 分钟),成功后签发 designerToken(写入 Cookie 与响应体);注销清除 designerToken Cookie。

  • 接口类型:REST 资源
  • 基址${myapps.context-path.designer:}/api/designtime(类级 @RequestMapping
  • Tag:Login(登录模块)

公共说明

  • 鉴权否(豁免)/api/designtime/login/api/designtime/logoutCommWebMvcConfig.filterRegistrationBeanPassFilter1(order=HIGHEST_PRECEDENCE)匹配并标记 pass=trueDesignerSecurityFilter 直接放行。登录成功后由本控制器签发 designerToken,后续接口需携带该 token(详见 index.md「鉴权说明」)。
  • 响应:统一 Resource(见 ../index.md「统一响应结构」)。
  • HTTP 方法:受 CommonSecurityFilter 限制,仅允许 GET/POST/HEAD/OPTIONS
  • 密码编码:登录请求体中 password 为变形 Base64:将原 Base64 字符串的**末两位**移到开头后再提交(即 password.substring(0, len-2) 为原 Base64 去掉末两位的剩余部分,password.substring(len-2) 为末两位)。服务端反向还原后用 Security.decodeBASE64 解码。
  • 错误次数累计:当 SuperUserVO 存在时记录到 pwdErrorTimes,否则记录到名为 <username>_errTimes 的 Cookie。

1. designer 登录

校验账号密码并签发 designerToken。同一账号连续错误次数累计:超过 2 次返回图形验证码图片(base64);超过 2 次且提交的 checkcode 与会话中验证码不符(不区分大小写)时直接拒绝;累计错误超过 10 次锁定账号 30 分钟(status=0、记录 lockTime)。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/login(完整:{designer-context}/api/designtime/login
  • 鉴权:否(豁免,本端点用于获取 designerToken)
  • Tag:Login(登录模块)

请求参数

参数名 位置 类型 必填 说明
content body string(JSON) 登录数据包体

请求体

JSON 对象,包含 usernamepassword(变形 Base64,见公共说明)、checkcode(图形验证码,错误次数 >2 后必填)。

{
  "username": "<用户登录名>",
  "password": "<变形 Base64 后的密码>",
  "checkcode": "<图形验证码,错误次数 >2 时必填>"
}

请求示例

POST /api/designtime/login HTTP/1.1
Content-Type: application/json

{
  "username": "admin",
  "password": "<变形 Base64 后的密码>",
  "checkcode": ""
}

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataJSONObject,成功时仅含 designerToken(JWT);失败需返回验证码时含 checkcodeImg(前缀 data:image/jpg;base64, 的 base64 JPG 图片字符串)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "designerToken": "<JWT 字符串>" },
  "errors": null
}

服务端会同时通过 Set-Cookie 响应头写入 designerToken Cookie。

失败示例(账号或密码错误):

{
  "errcode": 1,
  "errmsg": "账号或密码错误,或账号未激活",
  "data": { "checkcodeImg": "data:image/jpg;base64,<...>" },
  "errors": null
}
失败示例(验证码错误,错误次数已 >2):
{
  "errcode": 1,
  "errmsg": "输入字符错误,请重新输入图片中出现的4个字符",
  "data": { "checkcodeImg": "data:image/jpg;base64,<...>" },
  "errors": null
}


2. 注销登录

清除 designerToken Cookie(将值置空并立即过期),完成注销。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/logout(完整:{designer-context}/api/designtime/logout
  • 鉴权:否(豁免)
  • Tag:Login(登录模块)

请求参数

无。

请求示例

POST /api/designtime/logout HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 datanull(成功)。

成功示例

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

服务端会同时通过 Set-Cookie 响应头将 designerToken Cookie 置为空且 Max-Age=0

失败示例

{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }