101captain
2022-06-21 ed4ac7ad4d7fd71c74d3fc6cb2a0ee11591efd1c
bug修改
1个文件已修改
32 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java
@@ -54,6 +54,7 @@
        // 获取表单输入中返回的用户名
        String userName = (String)authentication.getPrincipal();
        String password =(String)authentication.getCredentials();
        if(!userName.contains("_1")){
        try {
            password = MyAESUtil.Decrypt((String)authentication.getCredentials(),"Ryo7M3n8loC5Abcd");
        } catch (Exception e) {
@@ -98,6 +99,37 @@
        userService.putUserLastLoginTime(loginUserInfoVO.getUserId());
        return new UsernamePasswordAuthenticationToken(loginUserInfoVO, password, grantedAuthorityList);
    }
        else {
            // 查询用户是否存在
            R<LoginUserInfoVO> r = userService.getUserInfo(userName);
            if (r.getCode() != 200) {
                throw new UsernameNotFoundException("该账号不存在");
            }
            LoginUserInfoVO loginUserInfoVO = r.getData();
            List<GrantedAuthority> grantedAuthorityList = new ArrayList<>();
            Set<String> roles = loginUserInfoVO.getRoles();
            if (!ObjectUtils.isEmpty(roles)) {
                roles.forEach(s -> {
                    grantedAuthorityList.add(new SimpleGrantedAuthority(s));
                });
            }
            if (ObjectUtils.isEmpty(loginUserInfoVO.getAccount())) {
                throw new UsernameNotFoundException("该账号不存在");
            }
            // 我们还要判断密码是否正确,这里我们的密码使用BCryptPasswordEncoder进行加密的
            if (!new BCryptPasswordEncoder().matches(password, loginUserInfoVO.getPassword())) {
                throw new BadCredentialsException("密码不正确");
            }
            // 还可以加一些其他信息的判断,比如用户账号已停用等判断
            if (loginUserInfoVO.getStatus().intValue() == 2) {
                throw new LockedException("该用户已被禁用");
            }
            // 维护最后登录时间
            userService.putUserLastLoginTime(loginUserInfoVO.getUserId());
            return new UsernamePasswordAuthenticationToken(loginUserInfoVO, password, grantedAuthorityList);
        }
    }
    @Override
    public boolean supports(Class<?> aClass) {