Привет, я студент-разработчик в Angular. Я пытаюсь получить данные пользователя с токеном этого пользователя. Я принимаю код состояния 200. Я знаю, что это означает «ОК», но я сталкиваюсь с такой ошибкой, и я ее не уловил. Я не знаю, что не так в моей строке кода.
ОШИБКА HttpErrorResponse {заголовки: HttpHeaders, status: 200, statusText: "OK", URL: "https://localhost: 44365 / api / Auth / login", ok: false,…} заголовки: HttpHeaders {normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ} статус: 200 statusText:" OK "url:" https://localhost: 44365 / api / Auth / login «ok: false name:« HttpErrorResponse »сообщение:« Ошибка Http во время анализа для https://localhost: 44365 / api / Auth / login »ошибка: ошибка : SyntaxError: Неожиданный токен e в JSON в позиции 0 в JSON .parse () в XMLHttpRequest.onLoad (http://localhost: 4200 / vendor. js: 24137: 51 ) at. ....
1017 * "текст": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiI2IiwidW5pcXVlX25hbWUiOiJhZG1pbiIsIm5iZiI6MTU3OTE4MzM1MiwiZXhwIjoxNTc5MjY5NzUyLCJpYXQiOjE1NzkxODMzNTJ9.9523aeTKL3t9COLJ1vJwlpadxeRnnLLhwBbWCmTDNU8DkmZ9zwCdjodwmYxoH06KHmUFvW0RMlna0ZKhJEid7g"
прото : Object прото : HttpResponseBase
Токен пользователя правильно приходят из моего веб-API. Мой метод публикации через веб-интерфейс ниже:
[HttpPost("Login")]
public async Task<IActionResult> Login ([FromBody] UserForLoginDto userForLoginDto)
{
var user = await _authRepository.Login(userForLoginDto.userLoginName,userForLoginDto.password);
if (user==null)
{
return Unauthorized();
}
var tokenHandLer = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_configuration.GetSection("AppSettings:Token").Value);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[] {
new Claim(ClaimTypes.NameIdentifier,user.userId.ToString()),
new Claim(ClaimTypes.Name,user.loginName)
}),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key),
SecurityAlgorithms.HmacSha512Signature)
};
var token = tokenHandLer.CreateToken(tokenDescriptor);
var tokenString = tokenHandLer.WriteToken(token);
return Ok(tokenString);
}
Ошибка возвращается моей службой. И мой service.ts здесь:
import { UserLoginDto } from '../dto/userLoginDto';
import { HttpHeaders, HttpClient } from '@angular/common/http';
import { JwtHelper,tokenNotExpired } from 'angular2-jwt';
import { Router } from '@angular/router';
import { UserRegisterDto } from '../dto/userRegisterDto';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private apiUrl = "https://localhost:44365/api/Auth/";
userToken: any;
decodedUserToken: any;
TOKEN_KEY = "token";
aas :any;
JwtHelper: JwtHelper = new JwtHelper();
constructor(private httpClient: HttpClient, private router: Router) { }
login(loginUser: UserLoginDto) {
let headers = new HttpHeaders();
headers = headers.append("Content-Type", "application/json")
this.httpClient.post(this.apiUrl + 'login', loginUser, {headers:headers}).subscribe(
data => {
this.saveToken(data);
this.userToken = data;
this.decodedUserToken = this.JwtHelper.decodeToken(data.toString());
this.router.navigateByUrl('./home')
})
}}
Когда я вызываю data в методе входа в систему, data не определена. У вас есть совет для меня? Что мне делать ?