Проблемы с Angular 8 и Spring Security - аутентификация - PullRequest
0 голосов
/ 03 марта 2020

У меня были некоторые проблемы с CORS, но теперь все в порядке. Заголовок Writer в бэкэнде помог. Теперь это еще один шаг, который нужно решить: предварительная проверка перед входом в систему не получает статус 200. Что может помочь в этом случае?

Некоторые файлы из angular:

user.ts

export class User {
  userMail: string;
  userPass: string;
  token?: string;
}

login.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { User } from './user';
import { Observable, throwError } from 'rxjs';
import { retry, catchError } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class LoginService {

  user: User;

  baseUrl = 'http://localhost:8081';

  constructor(private http: HttpClient) { }

  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json; charset=UTF-8',
      'Accept': '*/*',
      'X-Content-Type-Options': 'nosniff',
      'X-XSS-Protection': '1; mode=block',
      'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate'
    }),
    credentials: true
  };

  login(data, data2, token?): Observable<User> {
    return this.http.post<User>(this.baseUrl + '/login', JSON.stringify(data, data2, token), this.httpOptions)
      .pipe(
        retry(2),
        catchError(this.errorHandl)
      );
  }

  errorHandl(error) {
    let errorMessage = '';
    if (error.error instanceof ErrorEvent) {
      // Get client-side error
      errorMessage = error.error.message;
    } else {
      // Get server-side error
      errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
    }
    console.log(errorMessage);
    return throwError(errorMessage);
  }
}

login.component.ts

import { Component, OnInit, NgZone } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { Router } from '@angular/router';
import { LoginService } from './login.service';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { User } from './user';
import { Observable, throwError } from 'rxjs';
import { retry, catchError } from 'rxjs/operators';

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  formData: FormGroup;

  bindingMail = '';
  bindingPass = '';

  constructor(
    public ngZone: NgZone,
    public router: Router,
    public loginService: LoginService,
    public http: HttpClient
  ) { }

  ngOnInit() {
    this.formData = new FormGroup({
      mail: new FormControl(this.bindingMail, Validators.compose(
        [
          Validators.required,
          Validators.minLength(5)
        ]
      )),
      pass: new FormControl(this.bindingPass, Validators.compose(
        [
          Validators.required,
          Validators.minLength(8)
        ]
      ))
    });
  }

  login(bindingMail, bindingPass, token?) {
    this.loginService.login(bindingMail, bindingPass, token)
      .subscribe(res => {
        console.log(res);
        this.ngZone.run(() => this.router.navigateByUrl('/storage'));
      });
    this.formData.reset();
  }

  errorHandl(error) {
    let errorMessage = '';
    if (error.error instanceof ErrorEvent) {
      // Get client-side error
      errorMessage = error.error.message;
    } else {
      // Get server-side error
      errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
    }
    console.log(errorMessage);
    return throwError(errorMessage);
  }
}

Мы говорим о первом шаге до вызова POST, поэтому я знаю, что это еще не все с этим после этого. У меня пока нет перехватчиков, поэтому, если кто-то может сообщить мне, что делать дальше, это может быть полезно.

Заранее спасибо.

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