【发布时间】:2020-11-21 06:54:15
【问题描述】:
当我遇到下面的错误消息时,我正在尝试对我的 spring 安全性使用 JDBC 身份验证。我正在尝试将 User 类中的所有电子邮件和密码注册为有效登录名。我不确定我的 sql 语句或我的 User 类是否有问题。如有帮助,请提供任何帮助!
Caused by: org.h2.jdbc.JdbcSQLDataException:
Invalid value "3" for parameter "columnIndex" [90008-200]
春季安全
@Autowired
public void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.jdbcAuthentication()
// To find logins in the h2 database
.dataSource(dataSource)
.usersByUsernameQuery("select email, password " +
"from User " +
"where email = ?")
.authoritiesByUsernameQuery("select email, role " +
"from User " +
"where email =?");
}
用户类
@Entity
public class User {
private String firstName;
private String lastName;
@Size(min = 6, message ="Enter at least 6 characters")
@ValidPassword
private String password;
private String matchingPassword;
private String passportNumber;
private String address;
private String phoneNumber;
@ValidEmail
private String email;
// Mark as primary key
@Id
// Will be auto generated
@GeneratedValue
private long id;
private String role;
public User(@NotNull String firstName, @NotNull String lastName,
@Size(min = 6, message = "Enter at least 6 characters") @NotNull String password,
@NotNull String passportNumber, @NotNull String address, @NotNull String phoneNumber, String email,
String role) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.password = password;
this.passportNumber = passportNumber;
this.address = address;
this.phoneNumber = phoneNumber;
this.email = email;
this.role = role;
}
@Override
public String toString() {
return "User [firstName=" + firstName + ", lastName=" + lastName + ", password=" + password
+ ", matchingPassword=" + matchingPassword + ", passportNumber=" + passportNumber + ", address="
+ address + ", phoneNumber=" + phoneNumber + ", email=" + email + ", id=" + id + ", role=" + role + "]";
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getMatchingPassword() {
return matchingPassword;
}
public void setMatchingPassword(String matchingPassword) {
this.matchingPassword = matchingPassword;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPassportNumber() {
return passportNumber;
}
public void setPassportNumber(String passportNumber) {
this.passportNumber = passportNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setId(long id) {
this.id = id;
}
protected User() {
}
public long getId() {
return id;
}
}
编辑:这个问题的答案标记在下面
【问题讨论】:
标签: mysql spring spring-boot jdbc spring-security