Как я могу устранить ошибку аутентификации в угловых - PullRequest
0 голосов
/ 17 октября 2018

Я создаю угловое приложение, и у меня возникает ошибка, когда я хочу аутентифицировать кого-либо, даже если это логин правильный.

HttpErrorResponse {headers: HttpHeaders, status: 200, statusText:«OK», URL: «http://localhost:50518/api/Employee", ok: false,…} ошибка: ошибка: SyntaxError: Неожиданные токены в JSON в позиции 0 в JSON.parse () в XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:7076:51)в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:2743:31) в Object.onInvokeTask (http://localhost:4200/vendor.js:34894:33) в ZoneDelegate.push ../ node_modules / zone.js / dist / zone.js.ZoneDelegate.invokeTask (http://localhost:4200/polyfills.js:2742:36) в Zone.push ../ node_modules / zone.js / dist / zone.js.Zone.runTask (http://localhost:4200/polyfills.js:2510:47) в ZoneTask.push ../ node_modules / zone.js / dist / zone.js.ZoneTask.invokeTask [as invoke] (http://localhost:4200/polyfills.js:2818:34) в invokeTask (http://localhost:4200/polyfills.js:3862:14) в XMLHttpRequest.globalZoneAwareCallback (* 1021)* text: "test-test" proto : Заголовки объектов: HttpHeaders {normalizedNames: Map (0), lazyUpdate: null, lazyInit: ƒ} сообщение: "HОшибка ttp во время синтаксического анализа для http://localhost:50518/api/Employee" имя: «HttpErrorResponse» ok: ложное состояние: 200 statusText: «OK» url: «http://localhost:50518/api/Employee" proto : HttpResponseBase

Моя служба аутентификации:

export class AuthenticationService {
  header = new HttpHeaders({
    "content-type" : "application/JSON"
  })

  constructor(
    private http: HttpClient,
    private config : ApiConfigService,
    private router : Router) { }


login(username: string, password: string): Observable<HttpResponse<Authentication>>{
  return this.http.post<Authentication>(`http://localhost:50518/api/Employee`, {
    username: username,
    password: password
  }, {
    headers : this.header,
    observe : "body",
    responseType : "text"
  });
}
}

Я не понимаю, почему у меня есть эта ошибка. Я не думаю, что это происходит из-за моего .Net Core API.

Обновите проблемуприходит из моего .Net Core API, я делаю: return Ok(), но когда я переключаюсь с return Json(), это работает.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Является ли ответ, который вы получаете верным JSON?Можете ли вы опубликовать то, что вы получаете от API?Похоже, что он пытается проанализировать JSON, но он получает что-то еще, может быть строку?Если это так, вам нужно указать responseType для службы HTTP.Если это строка, вам нужно указать, что вы ожидаете получить «текст».

Это метод перегрузки службы HTTP Angulars, который вы должны использовать: (при условии, что вы получаете строку):

  /**
 * Construct a POST request which interprets the body as text and returns it.
 *
 * @return an `Observable` of the body as a `string`.
 */
post(url: string, body: any | null, options: {
    headers?: HttpHeaders | {
        [header: string]: string | string[];
    };
    observe?: 'body';
    params?: HttpParams | {
        [param: string]: string | string[];
    };
    reportProgress?: boolean;
    responseType: 'text';
    withCredentials?: boolean;
}): Observable<string>;

Ваше сообщение должно выглядеть примерно так:

 login(username: string, password: string): Observable<any>{
  return this.http.post<any>(`http://localhost:50518/api/Employee`, {
    username: username,
    password: password
  }, {
    headers : this.header,
    observe : "body",
    responseType : "text"
  });
}

Насколько я понимаю, здесь есть две проблемы: во-первых, ваш клиентский код ожидает JSON, потому что вы используете универсальныйпараметр в пост-вызове, но вы возвращаете строку из API.Если вы решите вернуть строку из API, вам нужно удалить универсальный параметр из http.post

И в своем коде API вернуть Ok ('ваша строка здесь')

0 голосов
/ 17 октября 2018

Проверьте, передаете ли вы правильные заголовки типа контента как application / JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...