Php 正确使用JWT和Angular 2
我在我的PHP服务器上有一个工作的后端JWT设置,经过几个小时后,我终于得到了一个登录angular控制台的结果,我现在不知道如何管理这个结果,并等待加载的信息返回结果,如果我删除订阅函数,我甚至无法呈现结果,这让我很困惑,为什么我不能简单地使用地图 无论如何,这是我的登录功能:Php 正确使用JWT和Angular 2,php,angular,authentication,jwt,Php,Angular,Authentication,Jwt,我在我的PHP服务器上有一个工作的后端JWT设置,经过几个小时后,我终于得到了一个登录angular控制台的结果,我现在不知道如何管理这个结果,并等待加载的信息返回结果,如果我删除订阅函数,我甚至无法呈现结果,这让我很困惑,为什么我不能简单地使用地图 无论如何,这是我的登录功能: login(username: string, password: string): Observable<boolean> { let result = false; va
login(username: string, password: string): Observable<boolean> {
let result = false;
var postData = "email=" + username + "&password=" + password;
let headers: Headers;
headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post('https://callum.tech/jwt/', postData, {headers: headers})
.take(1)
.map((res:any) => res.json())
.subscribe(
data => {
console.log(data.token)
if (data.token) {
console.log("token exists");
// set token property
this.token = data.token;
// store username and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify({ username: username, token: data.token }));
result = true;
}
},
err => {console.log(err)}
//,() => console.log("done!?")
);
console.log(result);
return Observable.of(result);
}
login(用户名:string,密码:string):可观察{
让结果=假;
var postData=“email=“+username+”&password=“+password;
让标题:标题;
headers=新的headers();
headers.append('Content-Type','application/x-www-form-urlencoded');
this.http.post('https://callum.tech/jwt/,postData,{headers:headers})
.采取(1)
.map((res:any)=>res.json())
.订阅(
数据=>{
console.log(data.token)
if(data.token){
日志(“令牌存在”);
//设置令牌属性
this.token=data.token;
//将用户名和jwt令牌存储在本地存储中,以在页面刷新之间保持用户登录
setItem('currentUser',JSON.stringify({username:username,token:data.token}));
结果=真;
}
},
err=>{console.log(err)}
//,()=>console.log(“完成!”)
);
控制台日志(结果);
可观察的回报(结果);
}
现在,这将使用正确的信息登录(我在PHP中的“token”下返回一个json,没有问题,这显示在控制台中)
我不确定如何等待并获得正确的响应,帖子内容似乎对订阅等非常敏感,或者它不会发布数据,因此我不确定如何处理这一可观察的问题。map只映射已解决的响应,它不会启动请求。您始终需要使用
subscribe
来启动它。这就是可见光的工作方式
代码也是异步的,您不能执行console.log(result)代码>在代码片段的末尾,在通过this.http.post()…
创建可观察对象之后,将立即运行该行
有关更多信息,请参阅文档: