设计时登录与注销(LoginDesignTimeController)¶
设计器服务的登录与注销:登录校验账号密码(连续错误超过阈值后强制校验图形验证码,错误 10 次以上锁定 30 分钟),成功后签发 designerToken(写入 Cookie 与响应体);注销清除 designerToken Cookie。
- 接口类型:REST 资源
- 基址:
${myapps.context-path.designer:}/api/designtime(类级@RequestMapping) - Tag:Login(登录模块)
公共说明¶
- 鉴权:否(豁免)。
/api/designtime/login与/api/designtime/logout由CommWebMvcConfig.filterRegistrationBeanPassFilter1(order=HIGHEST_PRECEDENCE)匹配并标记pass=true,DesignerSecurityFilter直接放行。登录成功后由本控制器签发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 对象,包含 username、password(变形 Base64,见公共说明)、checkcode(图形验证码,错误次数 >2 后必填)。
请求示例¶
POST /api/designtime/login HTTP/1.1
Content-Type: application/json
{
"username": "admin",
"password": "<变形 Base64 后的密码>",
"checkcode": ""
}
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:JSONObject,成功时仅含 designerToken(JWT);失败需返回验证码时含 checkcodeImg(前缀 data:image/jpg;base64, 的 base64 JPG 图片字符串)。
成功示例:
服务端会同时通过
Set-Cookie响应头写入designerTokenCookie。
失败示例(账号或密码错误):
{
"errcode": 1,
"errmsg": "账号或密码错误,或账号未激活",
"data": { "checkcodeImg": "data:image/jpg;base64,<...>" },
"errors": null
}
{
"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(登录模块)
请求参数¶
无。
请求示例¶
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:null(成功)。
成功示例:
服务端会同时通过
Set-Cookie响应头将designerTokenCookie 置为空且Max-Age=0。
失败示例: