张天森
2022-09-29 c87e44fb1a97619711d84eecba0136f1ec88b95c
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java
@@ -13,7 +13,9 @@
import javax.crypto.NoSuchPaddingException;
import com.panzhihua.auth.config.MyAESUtil;
import com.panzhihua.common.constants.Constants;
import com.panzhihua.common.model.helper.AESUtil;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.AES;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
@@ -46,6 +48,8 @@
    private UserService userService;
    @Resource
    private RedisTemplate redisTemplate;
    @Resource
    private CommunityService communityService;
    private static String LOGIN_FAIL="LOGIN_FAIL_";
@@ -54,7 +58,7 @@
        // 获取表单输入中返回的用户名
        String userName = (String)authentication.getPrincipal();
        String password =(String)authentication.getCredentials();
        if(!userName.contains("_1")){
        if(!userName.contains("_1")&&!userName.contains("_6")){
            try {
                password = MyAESUtil.Decrypt((String)authentication.getCredentials(),"Ryo7M3n8loC5Abcd");
            } catch (Exception e) {
@@ -64,8 +68,8 @@
            if(flag){
                Integer time= (Integer) redisTemplate.opsForValue().get(LOGIN_FAIL+userName);
                if(time>=5){
                    redisTemplate.opsForValue().set(LOGIN_FAIL+userName,5, Duration.ofMinutes(5));
                    throw new LockedException("登录错误超过限制,请五分钟后重试");
                    redisTemplate.opsForValue().set(LOGIN_FAIL+userName,5);
                    throw new LockedException("登录错误超过限制,账号已被锁定");
                }
            }
            // 查询用户是否存在
@@ -97,6 +101,11 @@
            }
            // 维护最后登录时间
            userService.putUserLastLoginTime(loginUserInfoVO.getUserId());
            //是否为专家登陆
            R r1 = communityService.isExpert(loginUserInfoVO.getPhone());
            if (r1.getCode()== Constants.SUCCESS){
                loginUserInfoVO.setType(13);
            }
            return new UsernamePasswordAuthenticationToken(loginUserInfoVO, password, grantedAuthorityList);
        }
        else {
@@ -126,6 +135,11 @@
            }
            // 维护最后登录时间
            userService.putUserLastLoginTime(loginUserInfoVO.getUserId());
            //是否为专家登陆
            R r1 = communityService.isExpert(loginUserInfoVO.getPhone());
            if (r1.getCode()== Constants.SUCCESS){
                loginUserInfoVO.setType(13);
            }
            return new UsernamePasswordAuthenticationToken(loginUserInfoVO, password, grantedAuthorityList);
        }