登录服务问题-Angular 6

时间:2018-08-21 10:02:52

标签: angular angular6

我正在尝试使登录工作正常进行,但是存在一些无法解决的问题。

我创建了登录服务,并且有:

Login(user: LoginModel) {

        return this.http.post(this.userLoginURL, user)  
            .pipe(map((response: Response) => {

               // this line needs changing to get response.token
               // if I write repsonse.token, it throws error because of type Response
                const token = sessionStorage.getItem('Token');

                if (token) {
                    this.token = token;

                    sessionStorage.setItem('Token', JSON.stringify(this.token));
                    return response;
                } else {
                    return false;
                }

            }));
    }

在我的组件中:

submitLoginForm(e) {

        if (this.valForm.valid) {
            this.loginService.login(this.loginModel)
                .subscribe(
                    (response) => {
                        this.router.navigate[('/dashboard')];
                    },
                    (error) => {
                        console.log(error);
                    }
                );
        }
    }

在我的登录服务中,作为响应,我得到的令牌是具有令牌和用户内部对象的对象:

token = {
  token = '...',
  user = {...}
}

如何根据此响应将令牌设置为存储?还是我做错了其他事情?

1 个答案:

答案 0 :(得分:1)

使用常规响应类型,因此您可以访问令牌属性

Login(user: LoginModel) {

        return this.http.post(this.userLoginURL, user)  
            .pipe(map((response: any) => {

                const token = response.token;

                if (token) {
                    this.token = token;

                    sessionStorage.setItem('Token', JSON.stringify(this.token));
                    return response;
                } else {
                    return false;
                }

            }));
    }