Ich habe Problem bekam mit Benutzerinformationen über http Anfrage an meine Ruhe api-Server bekommen, ich weiß nicht, was falsch ist ....Angular HTTP Request Probleme
Wenn Benutzer klicken Sie auf Login-Button, Angular Sendeauftrag zu Server mit Benutzername und Passwort, wenn es korrekt ist, gibt es Benutzerinformationen zurück, sonst gibt es null zurück. Problem ist, dass der variable Benutzer im Benutzerdienst immer noch null ist, obwohl der Benutzername und das Passwort korrekt sind.
Ich weiß nicht, wie man dieses Problem löst, also wenn Sie mir helfen, werde ich glücklich sein! Danke für jede Hilfe.
REST API:
package cz.flay.fellcms.http;
import cz.flay.fellcms.dao.UsersRepository;
import cz.flay.fellcms.entities.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@CrossOrigin
@RestController
@RequestMapping(path = "/api/users")
public class UsersRestController {
@Autowired
private UsersRepository usersRepository;
Logger logger = LoggerFactory.getLogger(UsersRestController.class);
@CrossOrigin
@GetMapping(path = "/all")
public @ResponseBody Iterable<User> getAll(){
return usersRepository.findAll();
}
@CrossOrigin
@GetMapping(path = "/verify", params = {"username", "password"})
public @ResponseBody User verify(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password){
logger.info("t");
return usersRepository.verify(username, password);
}
}
User Service
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { User } from '../entities/User';
@Injectable()
export class UserService {
private usersUrl: 'http://localhost:8080/api/users';
user: User;
verifyUrl: string;
constructor(private http: HttpClient) {}
isLoggedIn() {
return this.user != null;
}
isAdmin() {
return this.user.isAdmin;
}
unLoggin() {
this.user = null;
}
login(username: string, password: string) {
this.verifyUrl = 'http://localhost:8080/api/users/verify?username=' + username + '&password=' + password;
this.http.get<User>(this.verifyUrl).subscribe(data => this.user = data);
if (this.user != null) {
return true;
} else {
return false;
}
}
}
Mögliche Duplikate von [eckig 2, wie Daten von abonnieren] (https://stackoverflow.com/questions/39295854/angular-2-how-to-return-data-from-subscribe) – jonrsharpe
Oder verschiedene andere mit verschiedene Winkel. ** HTTP-Methoden sind asynchron **, daher die Verwendung von Observablen und die Notwendigkeit, ".subscribe" zu verwenden. Bitte lesen Sie https://angular.io/guide/http – jonrsharpe
Auch das ist alles falsch. Verschieben Sie http-Material zu einem Dienst. Verschieben Sie Benutzername und Pwd zu Körper, nicht URL. Speichern Sie sie nicht, auch nicht lokal auf diesem 'verifyUrl'. Holen Sie sich diesen REST-Service RESTfull. Usw. usw. – Zlatko