From 284bb7da704a333ef92e32610107e95749a3e0b0 Mon Sep 17 00:00:00 2001
From: 张天森 <1292933220@qq.com>
Date: 星期三, 13 七月 2022 15:12:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into huacheng
---
springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java | 114 ++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 73 insertions(+), 41 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java b/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java
index 947e5f2..8b7572f 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/auth/src/main/java/com/panzhihua/auth/handel/UserAuthenticationProvider.java
@@ -54,49 +54,81 @@
// 获取表单输入中返回的用户名
String userName = (String)authentication.getPrincipal();
String password =(String)authentication.getCredentials();
- try {
- password = MyAESUtil.Decrypt((String)authentication.getCredentials(),"Ryo7M3n8loC5Abcd");
- } catch (Exception e) {
- e.printStackTrace();
+ if(!userName.contains("_1")&&!userName.contains("_6")){
+ try {
+ password = MyAESUtil.Decrypt((String)authentication.getCredentials(),"Ryo7M3n8loC5Abcd");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ boolean flag= redisTemplate.hasKey(LOGIN_FAIL+userName);
+ 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("登录错误超过限制,请五分钟后重试");
+ }
+ }
+ // 查询用户是否存在
+ R<LoginUserInfoVO> r = userService.getUserInfo(userName);
+ if (r.getCode() != 200) {
+ lockLogin(flag,userName);
+ 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())||ObjectUtils.isEmpty(password)) {
+ lockLogin(flag,userName);
+ throw new UsernameNotFoundException("账号或密码错误");
+ }
+ // 我们还要判断密码是否正确,这里我们的密码使用BCryptPasswordEncoder进行加密的
+ if (!new BCryptPasswordEncoder().matches(password, loginUserInfoVO.getPassword())) {
+ lockLogin(flag,userName);
+ throw new BadCredentialsException("密码不正确");
+ }
+ // 还可以加一些其他信息的判断,比如用户账号已停用等判断
+ if (loginUserInfoVO.getStatus().intValue() == 2) {
+ throw new LockedException("该用户已被禁用");
+ }
+ // 维护最后登录时间
+ userService.putUserLastLoginTime(loginUserInfoVO.getUserId());
+ return new UsernamePasswordAuthenticationToken(loginUserInfoVO, password, grantedAuthorityList);
}
- boolean flag= redisTemplate.hasKey(LOGIN_FAIL+userName);
- 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("登录错误超过限制,请五分钟后重试");
- }
+ 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);
+
}
- // 查询用户是否存在
- R<LoginUserInfoVO> r = userService.getUserInfo(userName);
- if (r.getCode() != 200) {
- lockLogin(flag,userName);
- 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())||ObjectUtils.isEmpty(password)) {
- lockLogin(flag,userName);
- throw new UsernameNotFoundException("账号或密码错误");
- }
- // 我们还要判断密码是否正确,这里我们的密码使用BCryptPasswordEncoder进行加密的
- if (!new BCryptPasswordEncoder().matches(password, loginUserInfoVO.getPassword())) {
- lockLogin(flag,userName);
- throw new BadCredentialsException("密码不正确");
- }
- // 还可以加一些其他信息的判断,比如用户账号已停用等判断
- if (loginUserInfoVO.getStatus().intValue() == 2) {
- throw new LockedException("该用户已被禁用");
- }
- // 维护最后登录时间
- userService.putUserLastLoginTime(loginUserInfoVO.getUserId());
- return new UsernamePasswordAuthenticationToken(loginUserInfoVO, password, grantedAuthorityList);
}
@Override
--
Gitblit v1.7.1