我正在使用SpringBoot迈出第一步……我想提供一项服务登录,在其中放置用户和密码,如果正确,它将返回用户的数据。
目前,我可以根据用户数据做些什么,但是我可以解决我想要的,对此我将不胜感激。
我有2个问题。我暂时不知道如何发送2个参数“用户名”,“密码”。发送1。
存储库:
import org.springframework.data.repository.CrudRepository;
import prueba.Usuario;
public interface UsuRepository extends CrudRepository<Usuario,String>{
}
usuarioClass:
@Entity
@Table(name="usuario")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Usuario {
@Id
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@Column(name="email")
private String email;
public Usuario() {
}
public Usuario(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User[id=" + id + ", name=" + name + ", email=" + email + "]";
}
控制器
@RestController
@RequestMapping(value={"/usu"})
public class UsuController {
@Autowired
UsuService usuRepository;
@RequestMapping("/")
String home() {
return "Servicio Usuario!";
}
@RequestMapping(method=RequestMethod.GET, path = "/Login/{userName}" , produces = MediaType.APPLICATION_JSON_VALUE)
public Usuario Login(@PathVariable("userName") String userName) {
Usuario tasks = usuRepository.getUsu(userName);
return tasks;
}
接口:
public interface UsuService {
public List<Usuario> getUsus() ;
public Usuario getUsu(String name);
}
服务:
@Override
public Usuario getUsu(String user) {
Usuario usu;
return usu = usuRepository.findOne(user);
}
运行:
http://localhost:8080/usu/Login/edu
错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Mon Jul 02 10:31:34 CEST 2018
There was an unexpected error (type=Internal Server Error, status=500).
Provided id of the wrong type for class prueba.Usuario. Expected: class java.lang.Integer, got class java.lang.String; nested exception is java.lang.IllegalArgumentException: Provided id of the wrong type for class prueba.Usuario. Expected: class java.lang.Integer, got class java.lang.String
我已经做过一次测试,可以返回所有用户,并且可以正常工作。
此刻,我想输入用户名,然后返回数据,然后使用密码登录。谢谢。
我看过其他教程“使用SpringBoot登录”,但是本教程具有“安全性,encriptyng等”,但是我是新手,因此我需要轻松登录服务...
答案 0 :(得分:0)
我认为您在这里混入了一些概念。看到你有这个:
1)ID为int类型的类Usuario:
public class Usuario {
@Id
@Column(name="id")
private int id;
...
}
2)请求映射,其接收的用户类型为String:
@RequestMapping(method=RequestMethod.GET, path = "/Login/{userName}" , produces = MediaType.APPLICATION_JSON_VALUE)
public Usuario Login(@PathVariable("userName") String userName) { ...
3)使用String作为Usuario实体ID类型的存储库:
public interface UsuRepository extends CrudRepository<Usuario,String>
结论:
当您这样做:
public Usuario getUsu(**String** user) {
...
return usu = usuRepository.findOne(**user**);
}
您要让存储库查找具有 String ID的Usuario实体,但Usuario具有 int 作为ID。
因此出现错误:
Provided id of the wrong type for class prueba.Usuario. **Expected**: class java.lang.Integer, **got** class java.lang.String; nested exception is java.lang.IllegalArgumentException: Provided id of the wrong type for class prueba.Usuario. Expected: class java.lang.Integer, got class java.lang.String
您需要这样的东西:
public interface UsuRepository extends CrudRepository<Usuario,Integer> {
Usuario getByName(String username);
}
希望我能帮上忙。 :-)