feat: 实现登录失败锁定功能
新增了登录失败次数统计和临时锁定机制,包括: 1. 定义登录锁定数据结构和数据库表结构 2. 实现租户级别的锁定状态持久化接口 3. 添加登录速率限制安全策略配置 4. 在登录流程中加入锁定前置检查和失败计数逻辑 5. 提供管理员手动解锁的内部API接口 6. 新增中文本地化的锁定提示文案
This commit is contained in:
@@ -1293,6 +1293,22 @@ func ErrAuthFailed(id, topic string, serverTs, incomingReqTs time.Time) *ServerC
|
||||
}
|
||||
}
|
||||
|
||||
// ErrAuthLocked account is temporarily locked after too many login failures
|
||||
// (429); message carries the remaining lock time for the client to display.
|
||||
func ErrAuthLocked(id string, ts time.Time, message string, params map[string]any) *ServerComMessage {
|
||||
return &ServerComMessage{
|
||||
Ctrl: &MsgServerCtrl{
|
||||
Id: id,
|
||||
Code: http.StatusTooManyRequests, // 429
|
||||
Text: message,
|
||||
Params: params,
|
||||
Timestamp: ts,
|
||||
},
|
||||
Id: id,
|
||||
Timestamp: ts,
|
||||
}
|
||||
}
|
||||
|
||||
// ErrAuthUnknownScheme authentication scheme is unrecognized or invalid (401).
|
||||
func ErrAuthUnknownScheme(id, topic string, ts time.Time) *ServerComMessage {
|
||||
return &ServerComMessage{
|
||||
|
||||
Reference in New Issue
Block a user