• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logowanie do aplikacji

VPS Starter Arubacloud
0 głosów
337 wizyt
pytanie zadane 8 stycznia 2023 w Java przez mm Użytkownik (890 p.)

Hej,

Piszę aplikację, w której fronend jest pisany w Angularze a backend w Spring Boot, chcę się zalogować do mojej aplikacji, ale ta metoda, którą napisałam nie działa. Poniżej wrzucam kod i jeśli mogłabym prosić o podpowiedź co jest nie tak.

Kod w SpringBoot

@GetMapping("/users")
    public ResponseEntity<?> userLogin(@RequestBody User userData){
        User user= userRepository.findByLogin(userData.getLogin());
        if(user.getPassword().equals(userData.getPassword()))
            return ResponseEntity.ok(user);

        return (ResponseEntity<?>) ResponseEntity.internalServerError();
    }

Kod w Angularze

loginUser(user: User):Observable<Object>{
    console.log(user)
  return this.http.get(`${this.Url},user`);

  }

 

1 odpowiedź

+2 głosów
odpowiedź 8 stycznia 2023 przez Wiciorny Ekspert (277,460 p.)
Generalnie nie wiem  dlaczego używasz GET- do logowania kogoś...
W tym celu wykorzystaj POST, jakieś błędy? @PostMapping i dodatkowo @
Nie widzę samej kontroli błędów, przez co nie wiesz  z jakim obiektem tak naprawde masz doczynienia, czy w debuerze wyłapywany jest REQUEST? Jeśli nie to, albo ścieżka się nie zgadza, albo  błąd jest w danych.
Jak wygląda ten ${this.Url} ? Pytam, gdyż oczekujesz mapowanie na /users, a ten url powinien być raczej tylko domeną.

Jeszcze czy nie masz @RequestMappingu ustawionego na kontrolerze wskazującego na 1 węzeł endpointu ?

Jeszcze zgodność typów widzę przesyłaśz Observable<Object> jako json, to przy okazji miej na uwadze warto by zrobić model w angolarze User...
komentarz 8 stycznia 2023 przez mm Użytkownik (890 p.)
W tej klasie mam jeszcze jedną funkcję, która służy do rejestracji użytkownika i jak dodaję kolejną funkcję z Post Mapping dostaję następujący błąd i dodałam Request Mapping

Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'userService' method
pl.serwer.UserService#userLogin(User)
to {POST [/users]}: There is already 'userService' bean method
pl.serwer.UserService#userAdd(User) mapped.

 ${this.Url} wygląda następująco http://localhost:8080/users
komentarz 8 stycznia 2023 przez Wiciorny Ekspert (277,460 p.)
edycja 8 stycznia 2023 przez Wiciorny

teraz mówi Ci o tym, że masz dwie takie same metody (na takim samym endpoincie http://localhost:8080/users tego samego rodzaju POST, bo tak być nie może ), zmień w takim razie endpoint metody addUser np dodając
@PosttMapping("/user") szczegolnie ze dodajesz uzytkownika  i niestety metoda oprócz tej samej metody http  i tego samego fragmentu zasobu mapowania posiada ten sam argument.   
http://localhost:8080/user/

Nie wiem jaki masz poziom języka angielskiego, ale bez tego będzie Ci cięzko. Caused by: java.lang.IllegalStateException: Ambiguous mapping
Wyraźnie masz napisane i możesz nawet skorzystać z google, debugej i informacje o błędach własnie po to są, żebyś była wstanie naprawiać problemy.

OSTATNIA sprawa, dlaczego przesyłasz 

this.http.get.(`${this.Url},user`); // jako jeden string?
// zauważ że całość objełaś jako 1 argument i to powoduje błąd 
powinnaś przesłać 
 return this.http.post.(`${this.Url}`, user);  
// uwaga na format user.. 

https://angular.io/api/common/http/HttpClient#post
Spójrz proszę na argumenty. 
 

post(url: string, body: any, options: { headers?: HttpHeaders | { [header: string]: 

Może być potrzeba dodania opcji, szczególnie jeśli nie posyłasz zgodności modelu User
 

const httpOptions = {
headers: new HttpHeaders({
 'Content-Type': 'application/json'
  })
}

i dodania opcji jako 3 parametr do funkcji 

komentarz 8 stycznia 2023 przez mm Użytkownik (890 p.)
Teraz działa. Bardzo dziękuję za pomoc :)
komentarz 8 stycznia 2023 przez Wiciorny Ekspert (277,460 p.)
bardzo prosze, jakby były dalej pytania w tym zakresie to nie ma problemu

Podobne pytania

0 głosów
1 odpowiedź 262 wizyt
pytanie zadane 13 maja 2023 w Java przez mm Użytkownik (890 p.)
0 głosów
1 odpowiedź 171 wizyt
pytanie zadane 16 kwietnia 2023 w Java przez mm Użytkownik (890 p.)
0 głosów
0 odpowiedzi 165 wizyt

92,977 zapytań

141,940 odpowiedzi

321,182 komentarzy

62,303 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...