修正了security拦截器npe问题

This commit is contained in:
ajaxfan
2021-04-09 08:53:33 +08:00
parent 02bc8014c8
commit 1a6ad756c6
2 changed files with 7 additions and 5 deletions

View File

@ -13,7 +13,7 @@ public class UserCenterClientFallback implements UserCenterClient {
@Override @Override
public SecurityUser getUserInfo() { public SecurityUser getUserInfo() {
log.error("Feign connect timeout."); log.error("Feign Fallback.");
return new SecurityUser(); return new SecurityUser();
} }

View File

@ -1,8 +1,10 @@
package com.chinaunicom.mall.ebtp.cloud.security.starter.filter; package com.chinaunicom.mall.ebtp.cloud.security.starter.filter;
import java.io.IOException; import java.io.IOException;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
@ -35,7 +37,6 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
private @Autowired UserCenterClient client; private @Autowired UserCenterClient client;
/** /**
* @param request * @param request
* @param response * @param response
@ -77,9 +78,10 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
SecurityUser securityUser = client.getUserInfo(); SecurityUser securityUser = client.getUserInfo();
// 根据当前角色设定权限列表 // 根据当前角色设定权限列表
List<RoleCodeAuthority> authorities = securityUser.getAuthorityList().stream() List<RoleCodeAuthority> authorities = Optional.ofNullable(securityUser.getAuthorityList()).map(list -> {
.filter(auth -> Objects.equals(auth.getRoleCode(), currentRoleCode)) return list.stream().filter(auth -> Objects.equals(auth.getRoleCode(), currentRoleCode))
.map(auth -> new RoleCodeAuthority(auth.getRoleCode())).collect(Collectors.toList()); .map(auth -> new RoleCodeAuthority(auth.getRoleCode())).collect(Collectors.toList());
}).orElseGet(() -> Collections.emptyList());
return new UsernamePasswordAuthenticationToken(securityUser.setCurrentRoleCode(currentRoleCode), token, return new UsernamePasswordAuthenticationToken(securityUser.setCurrentRoleCode(currentRoleCode), token,
authorities); authorities);