扫码确认不记失败次数
This commit is contained in:
1 parent
39878e0aa5
commit
bb219fb6dc
1 file changed
+14
-3
+14
-3
@@ -29,6 +29,7 @@ import com.bsd.pjcloud.common.data.resolver.ParamResolver;
|
||||
import com.bsd.pjcloud.common.log.event.SysLogEvent;
|
||||
import com.bsd.pjcloud.common.log.util.LogTypeEnum;
|
||||
import com.bsd.pjcloud.common.log.util.SysLogUtils;
|
||||
import com.bsd.pjcloud.common.security.util.OAuth2ErrorCodesExpand;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -89,10 +90,11 @@ public class PjcloudAuthenticationFailureEventHandler implements AuthenticationF
|
||||
if (OAuth2ParameterNames.PASSWORD.equals(grantType)) {
|
||||
String username = request.getParameter(OAuth2ParameterNames.USERNAME);
|
||||
|
||||
// 密码错误记录错误次数 (TOC用户不记录)
|
||||
// 密码错误记录错误次数 (TOC用户不记录;微信绑定/确认门禁不算失败)
|
||||
String header = WebUtils.getRequest().getHeader(SecurityConstants.HEADER_TOC);
|
||||
if (exception instanceof OAuth2AuthenticationException
|
||||
&& !SecurityConstants.HEADER_TOC_YES.equals(header)) {
|
||||
if (exception instanceof OAuth2AuthenticationException oauth2Ex
|
||||
&& !SecurityConstants.HEADER_TOC_YES.equals(header)
|
||||
&& !isWechatGateError(oauth2Ex)) {
|
||||
recordLoginFailureTimes(username);
|
||||
}
|
||||
|
||||
@@ -131,6 +133,15 @@ public class PjcloudAuthenticationFailureEventHandler implements AuthenticationF
|
||||
publisher.publishEvent(new SysLogEvent(logVo));
|
||||
}
|
||||
|
||||
/**
|
||||
* PC 微信绑定/扫码确认:密码已校验通过,不应计入登录失败锁定
|
||||
*/
|
||||
private boolean isWechatGateError(OAuth2AuthenticationException exception) {
|
||||
String errorCode = exception.getError().getErrorCode();
|
||||
return OAuth2ErrorCodesExpand.WECHAT_BIND_REQUIRED.equals(errorCode)
|
||||
|| OAuth2ErrorCodesExpand.WECHAT_CONFIRM_REQUIRED.equals(errorCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录登录失败此处,如果操作阈值 调用接口锁定用户
|
||||
*
|
||||
|
||||
Reference in new issue
Block a user