我将此枚举用于可用的用户角色类型:
public enum Role implements GrantedAuthority {
ROLE_ADMIN, ROLE_CLIENT;
public String getAuthority() {
return name();
}
}
完整代码:Github
但是当我尝试使用以下代码转换列表时:
claims.put("auth", roles.stream()
.map(s -> new SimpleGrantedAuthority(s.getAuthority()))
.filter(Objects::nonNull)
.collect(Collectors.toList())
);
当我尝试获得s.getAuthority()
时,我总是得到NPE。你知道我该如何解决这个问题?
答案 0 :(得分:2)
在使用filter
之前,应使用map
删除所有空值。
roles.stream().filter(Objects::nonNull)
.map(s -> new SimpleGrantedAuthority(s.getAuthority()))
.collect(Collectors.toList());