【发布时间】:2015-05-15 16:23:45
【问题描述】:
我在我的应用程序中使用 Spring Boot 和 Spring Security。当我从数据库中获取用户时,我收到以下错误,即使我包含了它的所有依赖项:
没有找到能够从 java.lang.String 类型转换为 org.springframework.security.core.GrantedAuthority 类型的转换器
这是怎么引起的,我该如何解决?
我的实体是
public class User {
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
public static final String ROLES = "roles";
@Id String id;
String firstName;
@JsonProperty(PASSWORD)
String password;
@JsonProperty(USERNAME)
String userName;
@JsonProperty(ROLES)
@JsonSerialize(contentUsing = GrantedAuthoritySerializer.class)
@JsonDeserialize(contentUsing = GrantedAuthorityDeserializer.class)
private List<GrantedAuthority> roles;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public List<GrantedAuthority> getRoles() {
System.out.println("roles"+roles);
return roles;
}
@Override
public String toString() {
return new ToStringBuilder(this)
.append("username", userName)
.append("password", password)
.append("roles", roles)
.toString();
}
用户服务
User user = userRepository.findById("5555c3e77d6e5b11dd4ff858");
身份验证提供者
UserDetails loadedUser;
System.out.println("username"+username);
try {
com.samepinch.domain.user.User samepinchuser = userService.findUserByUsername(username);
System.out.println("samepinchuser"+samepinchuser);
loadedUser = new User(samepinchuser.getUserName(), samepinchuser.getPassword(),samepinchuser.getRoles());
System.out.println("loaded user"+loadedUser);
} catch (Exception repositoryProblem) {
throw new InternalAuthenticationServiceException(repositoryProblem.getMessage(), repositoryProblem);
}
【问题讨论】:
标签: java spring spring-mvc spring-boot