From ca463d48d63afc88441c7d25bdb54ce689e63dd1 Mon Sep 17 00:00:00 2001 From: linlinjie Date: Sun, 24 Jul 2022 11:36:48 +0800 Subject: [PATCH] =?UTF-8?q?fix-=E7=99=BB=E5=BD=95=E6=97=B6=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=90=8D=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E6=8F=90?= =?UTF-8?q?=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/filter/JWTAuthenticationFilter.java | 16 ++++++++++------ .../service/impl/UserDetailsServiceImpl.java | 7 +++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java index de7b9b3c..5190faff 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/filter/JWTAuthenticationFilter.java @@ -26,6 +26,7 @@ import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; @@ -33,7 +34,6 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import javax.servlet.FilterChain; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -65,14 +65,18 @@ public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilte public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { // Get logged in information from the input stream. + Authentication authenticate = null; try { LoginUser loginUser = new ObjectMapper().readValue(request.getInputStream(), LoginUser.class); rememberMe.set(loginUser.getRememberMe()); - return authenticationManager.authenticate( + authenticate = authenticationManager.authenticate( new UsernamePasswordAuthenticationToken(loginUser.getUsername(), loginUser.getPassword(), new ArrayList())); - } catch (IOException e) { - logger.error("attemptAuthentication error :{}", e); - return null; + } catch (BadCredentialsException e) { + log.warn("BadCredentialsException:{}", e.getMessage()); + } catch (Exception e) { + log.error("attemptauthentication error:", e); + } finally { + return authenticate; } } @@ -102,7 +106,7 @@ public class JWTAuthenticationFilter extends UsernamePasswordAuthenticationFilte } @Override - protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException { + protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException { response.setCharacterEncoding("UTF-8"); response.getWriter().write(JSONUtil.toJsonStr(new ReturnT(-1, "Server Error"))); } diff --git a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserDetailsServiceImpl.java b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserDetailsServiceImpl.java index 7592c8bb..a058fd7e 100644 --- a/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserDetailsServiceImpl.java +++ b/hippo4j-auth/src/main/java/cn/hippo4j/auth/service/impl/UserDetailsServiceImpl.java @@ -21,6 +21,7 @@ import cn.hippo4j.auth.mapper.UserMapper; import cn.hippo4j.auth.model.UserInfo; import cn.hippo4j.auth.model.biz.user.JwtUser; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; @@ -28,11 +29,13 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import javax.annotation.Resource; import java.util.Collections; +import java.util.Objects; import java.util.Set; /** * User details service impl. */ +@Slf4j public class UserDetailsServiceImpl implements UserDetailsService { @Resource @@ -41,6 +44,10 @@ public class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException { UserInfo userInfo = userMapper.selectOne(Wrappers.lambdaQuery(UserInfo.class).eq(UserInfo::getUserName, userName)); + if (Objects.isNull(userInfo)){ + log.warn("User {} not found",userName); + throw new UsernameNotFoundException(userName); + } JwtUser jwtUser = new JwtUser(); jwtUser.setId(userInfo.getId()); jwtUser.setUsername(userName);