У меня есть следующая сервисная подписка в моем компоненте:
this.userService.loginUser(this.user).subscribe(users => {
if (users == null) {
console.log('users is null');
this.isValid = !this.isValid;
} else {
this.userService.subscribers.next(users);
localStorage.setItem('user', JSON.stringify(users));
console.log(`User, ${this.user.username}, successfully logged in!`);
console.log(localStorage.getItem('user'));
this.router.navigate(['dashboard']);
}
});
Метод обслуживания выглядит следующим образом:
public loginUser(user: User) {
console.log(`Attempting to login user: ${user.username}`);
const json = JSON.stringify(user);
this.currentUser = user;
return this.http.post<User>(API_URL + 'login', json, HTTP_OPTIONS);
}
Запрос на отправку отправляется на этот метод сервлета Java:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("login attempt");
if (req.getInputStream() != null) {
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(req.getInputStream(), User.class);
user = userService.loginUser(user);
if (user != null) {
user.setPassword("");
HttpSession session = req.getSession();
session.setAttribute("user", user);
}
}
}
На стороне Java найдено имя пользователя и пароль, а атрибут сеанса установлен правильно. Тем не менее, на конце Angular «users» имеет значение null, о чем свидетельствует console.log('users is null')
в первом блоке кода. Итак, мой вопрос, почему это ноль? Может кто-нибудь, пожалуйста, помогите мне понять механику этого? Мне очень трудно понять, как работают некоторые аспекты Angular ...