У меня есть некоторые проблемы с выяснением того, как создать форму входа в angularjs, используя springboot.
Я могу зарегистрировать пользователя и отправить данные в базу данных, но проблемы начинаются, когда я хочу войти в систему.
в angularjs у меня есть такая функция
function Login(username, password, callback) {
$http.post('/api/authenticate', { username: username, password: password })
.success(function (response) {
callback(response);
});
}
То, что мне удалось сделать, но, вероятно, не так:
@RequestMapping(value = "/authenticate/{id}",method = RequestMethod.GET)
public User getUser(@PathVariable Integer id) {
return repo.findOne(id);
}
Это дает мне следующий json
{"id":2,"username":"jdoe","password":"$2a$10$5hgIyQr.K9wb8cXEyWGbROAU.rkYzd19vP7ajHpwp1KUYdShfcPn.","lastname":"doe","firstname":"john","customfield":"Hello there"}
Но теперь у меня есть следующие проблемы и вопросы:
Как я могу проверить, совпадает ли имя пользователя и пароль с именем пользователя и паролем json, перейдя на api/authenticate? (без {id})
могу ли я скрыть этот json от пользователей?
Это безопасно?
как теперь будут угловые все пользовательские свойства? (я предлагаю, я могу получить это из json)
какие-либо про советы о том, как это решить?
Из AngularJS вы вызываете метод HTTP POST
а на стороне Spring вы объявляете HTTP GET
, что неверно.
Правильное отображение запроса
@RequestMapping(value = "/api/authenticate",method = RequestMethod.POST, consumes = "application/json")
@ResponseBody
public User getUser(@RequestBody User user) {
//here request body contains User POJO object payload (JSON object)
//You are getting username from JSON,
//so you need to update your call to findOne method
return repo.findOne(user.getUserName());
}
Пожалуйста, обратитесь