【问题标题】:Properly use JWT with Angular 2正确使用 JWT 和 Angular 2
【发布时间】:2018-04-03 19:05:30
【问题描述】:

我在我的 PHP 服务器上有一个有效的后端 JWT 设置,我终于在几个小时后得到了登录控制台的结果,我现在想不通的是如何管理这个结果并等待信息加载返回结果,如果我删除我的订阅功能,我什至无法呈现结果,这让我感到困惑,为什么我不能简单地使用地图?

这里是我的登录功能:

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);
    }

现在这将使用正确的信息登录(我在 'token' 下的 PHP 中返回一个 json 并且没有问题,这显示在控制台中)

我不知道如何等待并得到正确的响应,POST 的东西似乎对订阅等非常敏感,或者它不会发布数据,所以我不知道如何处理这个

【问题讨论】:

    标签: php angular authentication jwt


    【解决方案1】:

    Observable.map 只是映射解析的响应,它不会启动请求。您总是需要使用subscribe 来启动它。这就是可观察对象的工作方式。

    而且代码是异步的,你不能在你的 sn-p 末尾做console.log(result);,那一行将在通过this.http.post()... 创建 observable 后立即运行。

    查看文档了解更多信息:

    https://angular.io/guide/http

    https://xgrommx.github.io/rx-book/content/getting_started_with_rxjs/creating_and_querying_observable_sequences/creating_and_subscribing_to_simple_observable_sequences.html

    https://scotch.io/tutorials/angular-2-http-requests-with-observables

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2016-03-03
      • 2018-11-06
      • 2017-09-13
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2017-11-27
      相关资源
      最近更新 更多