我正在尝试创建用户日志记录服务,但是我遇到了一些数据解析问题,当用户点击登录按钮时,http请求被调用到api服务器,如果用户名和密码是正确的,服务器会响应用户信息而我需要将此信息解析为User变量,如果user不为null,则返回true,否则返回false,但metod始终返回true ...
方法用户服务:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/map';
import { User } from '../entities/User';
@Injectable()
export class UserService {
private usersUrl: 'http://localhost:8080/api/users';
user: User;
constructor(private http: HttpClient) {}
isLoggedIn() {
return this.user != null;
}
isAdmin() {
return this.user.isAdmin;
}
unLoggin() {
this.user = null;
}
login(username: string, password: string) {
return this.http.get<User>(`${this.usersUrl}/verify?username=${username}&password=${password}`)
.map(
user => {
this.user = user;
return this.user != null;
});
}
}
json中的用户示例:
{"id":2,"name":"Some","email":"sometni","username":"iafouafa","password":"Hoifhnaol"}
我认为存在多个问题,首先是方法是无效的,这个我可以解决,但是如果我重新将它重新设置为返回布尔值并且将return语句放在最后而不是map操作符它将始终返回false ...如果您需要更多信息,请告诉我您的需求。
抱歉我的英语不好。
感谢您的帮助!
答案 0 :(得分:0)
试试这个:
login(username: string, password: string) {
return this.http.get<User>(`${this.usersUrl}/verify?username=${username}&password=${password}`)
.map(
user => {
return user;
});
}
现在执行登录 performe在某处记录
this.login(username,pass).subascribe(user => {
this.user = user;
}
现在你可以调用你的isLoggedIn()方法