Documentation
¶
Index ¶
- type EscalationRule
- type LockCallback
- type LockEvent
- type LockTarget
- type LockType
- type Manager
- func (m *Manager) Clear(targets Targets)
- func (m *Manager) IsLocked(targets Targets) (bool, *LockEvent)
- func (m *Manager) RecordFailure(target LockTarget, identifier string, callbacks ...LockCallback) (bool, *LockEvent)
- func (m *Manager) RecordFailures(targets Targets, callbacks ...LockCallback) (bool, *LockEvent)
- func (m *Manager) RestoreLock(target LockTarget, identifier string, expire time.Time)
- func (m *Manager) UpdatePolices(polices Policies)
- type Policies
- type Policy
- type Targets
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EscalationRule ¶
type EscalationRule struct {
UpgradeTo LockTarget `json:"upgrade_to" yaml:"upgrade_to"` // 升级到哪个目标
// 是否启用记忆效应
// 比如升级链是 会话锁 IP锁,
// 当会话锁定次数满足 IP锁的锁定条件后,触发IP锁,当下一次操作错误时,直接IP错误次数累加,而不是重新从会话锁开始升级上来。
MemoryEffect bool `json:"memory_effect" yaml:"memory_effect"`
}
EscalationRule 升级规则
type LockEvent ¶
type LockEvent struct {
Target LockTarget `json:"target"`
Identifier string `json:"identifier"`
LockType LockType `json:"lock_type"` // 锁定类型:direct-直接触发, escalation-升级触发, memory-记忆效应
LockoutTime time.Duration `json:"lockout_time"` // 锁定时长
RemainingTime time.Duration `json:"remaining_time"` // 剩余锁定时间
Reason string `json:"reason"` // 锁定原因
Timestamp time.Time `json:"timestamp"` // 锁定时间
Expire time.Time `json:"expire"` // 过期时间
Policy Policy `json:"policy"` // 安全策略
}
LockEvent 锁定事件
type LockTarget ¶
type LockTarget string
LockTarget 锁目标
const ( LockTargetSession LockTarget = "session" // 会话层锁定 LockTargetIP LockTarget = "ip" // IP层锁定 LockTargetUser LockTarget = "user" // 用户层锁定 )
func (LockTarget) String ¶
func (t LockTarget) String() string
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewManager ¶
NewManager 创建策略管理器
func (*Manager) RecordFailure ¶
func (m *Manager) RecordFailure(target LockTarget, identifier string, callbacks ...LockCallback) (bool, *LockEvent)
func (*Manager) RecordFailures ¶
func (m *Manager) RecordFailures(targets Targets, callbacks ...LockCallback) (bool, *LockEvent)
func (*Manager) RestoreLock ¶
func (m *Manager) RestoreLock(target LockTarget, identifier string, expire time.Time)
RestoreLock 恢复锁定 用于程序重启后,从数据库载入所有锁定信息 仅仅恢复锁定目标,失败次数允许丢失。
func (*Manager) UpdatePolices ¶
UpdatePolices 更新策略
type Policy ¶
type Policy struct {
Target LockTarget `json:"target" yaml:"target"` // 锁定目标
Trigger int `json:"trigger" yaml:"trigger"` // 连续触发失败次数
WindowTime time.Duration `json:"window_time" yaml:"window_time"` // 连续触发失败的窗口时间,多少时间内触发会累计缓存
LockoutTime time.Duration `json:"lockout_time" yaml:"lockout_time"` // 连续失败Trigger后,目标的锁定时长
Priority int `json:"priority" yaml:"priority"` // 优先级 ,值越大,优先级越高,独立模式下使用
// 升级配置
// 未配置升级规则,切 连续触发失败次数 >0,作为独立策略
Escalation *EscalationRule `json:"escalation,omitempty" yaml:"escalation"`
}
Policy 单条锁定策略
func (*Policy) GetTarget ¶
func (p *Policy) GetTarget() LockTarget
func (*Policy) GetUpgradeTo ¶
func (p *Policy) GetUpgradeTo() LockTarget
Click to show internal directories.
Click to hide internal directories.