Я могу войти в систему и получить токен и имя пользователя, но идентификатор пользователя не определен. я могу консоль регистрировать все данные пользователей, имя пользователя и токен, но userId не определен. я использую инфраструктуру сущностей на бэкэнде и создаю пользователя без идентификатора, но я даже пробовал с идентификатором, и это также не работает.
в чем может быть причина?
login(username: string, password: string): Observable<boolean> {
return this.http.post<any>(environment.apiUrl + '/token', {username, password})
.pipe(map(response => {
const token = response.token;
const userID = response.userID;
console.info(userID);
// login successful if there's a jwt token in the response
if (token) {
// store username and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({userID, username, token}));
// return true to indicate successful login
return true;
} else {
// return false to indicate failed login
return false;
}
}));
}
Серверная часть:
User admin = ctx.Users.Add(new User()
{
UserId = 1, (try without it and with)
Username = "admin",
PasswordHash = passwordHashAdmin,
PasswordSalt = passwordSaltAdmin,
IsAdmin = true,
}).Entity;
в ответ я получаю имя пользователя и токен
Javascript чувствителен к регистру.
В вашей модели С# у вас есть:
UserId = 1, (try without it and with)
Я предполагаю, что вы используете camelCase, поэтому он будет возвращен из API как userId.
В Javascript у вас есть:
response.userID;
Обратите внимание, что буква D — заглавная. Измените это на нижний регистр.
Также вы могли бы поймать это раньше, если бы вы только что сделали:
console.info(response);
Чтобы проверить всю возвращенную полезную нагрузку.
Является ли имя поля userId вместо userID? Попробуйте записать в консоль полный ответ, чтобы узнать, что возвращается от API.