Browse Source

perf: 优化登录授权部分逻辑

master
wangxiang 2 years ago
parent
commit
ac46d387bd
  1. 6
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java
  2. 4
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java
  3. 4
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java

6
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccWebResponseExceptionTranslator.java

@ -34,14 +34,12 @@ public class KiccWebResponseExceptionTranslator implements WebResponseExceptionT
Throwable[] causeChain = throwableAnalyzer.determineCauseChain(e); Throwable[] causeChain = throwableAnalyzer.determineCauseChain(e);
Exception ase = (AuthenticationException) throwableAnalyzer Exception ase = (AuthenticationException) throwableAnalyzer.getFirstThrowableOfType(AuthenticationException.class, causeChain);
.getFirstThrowableOfType(AuthenticationException.class, causeChain);
if (ase != null) { if (ase != null) {
return handleOAuth2Exception(new UnauthorizedException(e.getMessage(), e)); return handleOAuth2Exception(new UnauthorizedException(e.getMessage(), e));
} }
ase = (AccessDeniedException) throwableAnalyzer.getFirstThrowableOfType(AccessDeniedException.class, ase = (AccessDeniedException) throwableAnalyzer.getFirstThrowableOfType(AccessDeniedException.class, causeChain);
causeChain);
if (ase != null) { if (ase != null) {
return handleOAuth2Exception(new ForbiddenException(ase.getMessage(), ase)); return handleOAuth2Exception(new ForbiddenException(ase.getMessage(), ase));
} }

4
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccAppUserDetailsServiceImpl.java

@ -2,7 +2,6 @@ package com.cloud.kicc.common.security.service.impl;
import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.data.entity.KiccUser; import com.cloud.kicc.common.data.entity.KiccUser;
import com.cloud.kicc.common.security.service.KiccUserDetailsService; import com.cloud.kicc.common.security.service.KiccUserDetailsService;
import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.User;
@ -11,6 +10,7 @@ import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
/** /**
*<p> *<p>
@ -36,7 +36,7 @@ public class KiccAppUserDetailsServiceImpl implements KiccUserDetailsService {
public UserDetails loadUserByUsername(String phone) { public UserDetails loadUserByUsername(String phone) {
R<User> result = remoteUserService.selectByPhone(phone, SecurityConstants.FROM_IN); R<User> result = remoteUserService.selectByPhone(phone, SecurityConstants.FROM_IN);
if (result == null || result.getData() == null) { if (result == null || result.getData() == null) {
throw new CheckedException("手机号不存在"); throw new UsernameNotFoundException("手机号不存在!");
} }
UserDetails userDetails = getUserDetails(result); UserDetails userDetails = getUserDetails(result);
return userDetails; return userDetails;

4
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/service/impl/KiccUserDetailsServiceImpl.java

@ -2,7 +2,6 @@ package com.cloud.kicc.common.security.service.impl;
import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.core.constant.SecurityConstants;
import com.cloud.kicc.common.core.exception.CheckedException;
import com.cloud.kicc.common.security.service.KiccUserDetailsService; import com.cloud.kicc.common.security.service.KiccUserDetailsService;
import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.feign.RemoteUserService; import com.cloud.kicc.system.api.feign.RemoteUserService;
@ -11,6 +10,7 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
/** /**
*<p> *<p>
@ -37,7 +37,7 @@ public class KiccUserDetailsServiceImpl implements KiccUserDetailsService {
public UserDetails loadUserByUsername(String username) { public UserDetails loadUserByUsername(String username) {
R<User> result = remoteUserService.selectByUserName(username, SecurityConstants.FROM_IN); R<User> result = remoteUserService.selectByUserName(username, SecurityConstants.FROM_IN);
if (result == null || result.getData() == null) { if (result == null || result.getData() == null) {
throw new CheckedException("用户不存在"); throw new UsernameNotFoundException("用户不存在!");
} }
UserDetails userDetails = getUserDetails(result); UserDetails userDetails = getUserDetails(result);
return userDetails; return userDetails;

Loading…
Cancel
Save