zhongrj
2023-07-26 f169b2152fb4a63136f841f9d0d65b0bdd4686d8
skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/config/MyAuthenticationProvider.java
@@ -1,5 +1,6 @@
package cn.gistack.auth.config;
import cn.gistack.auth.granter.PhoneTokenGranter;
import cn.gistack.auth.utils.TokenUtil;
import cn.gistack.common.cache.CacheNames;
import com.alibaba.nacos.common.utils.StringUtils;
@@ -35,6 +36,12 @@
    public static final String CUSTOM_LOGIN_SMS = "CUSTOM_LOGIN_SMS";
    public static final String CUSTOM_LOGIN_WX = "CUSTOM_LOGIN_WX";
    public static final String CUSTOM_LOGIN_OAUTH = "CUSTOM_LOGIN_OAUTH";
   public static final String OAUTH = "oauth";
   public static final String PHONE = "phone";
   public static final String WX = "wx";
    @Autowired
   private BladeRedis bladeRedis;
@@ -61,8 +68,7 @@
            throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
        } else {
         String password = authentication.getCredentials().toString();
         // 手机号登录时不验证密码
         if(!CUSTOM_LOGIN_SMS.equals(password)&&!CUSTOM_LOGIN_WX.equals(password)){
            HttpServletRequest request = WebUtil.getRequest();
            String grantType = request.getParameter(TokenUtil.GRANT_TYPE_KEY);
            // 获取租户ID
@@ -70,6 +76,14 @@
            String paramTenant = request.getParameter(TokenUtil.TENANT_PARAM_KEY);
            // 指定租户ID
            String tenantId = StringUtils.isBlank(headerTenant) ? paramTenant : headerTenant;
         // 手机号短信登录时不验证密码、微信登录时不验证密码、单点登录时不验证密码
         if (grantType.equals(PHONE) || grantType.equals(WX) || grantType.equals(OAUTH)) {
            // 成功则清除登录错误次数
            delFailCount(tenantId, userDetails.getUsername());
            return;
         }
            String detailsPassword = userDetails.getPassword().substring(7);
            if (!detailsPassword.equals(DigestUtil.hex(password))) {
               int count = getFailCount(tenantId, userDetails.getUsername());
@@ -83,7 +97,6 @@
            }
            // 成功则清除登录错误次数
            delFailCount(tenantId, userDetails.getUsername());
         }
        }
    }