У меня есть приложение стека MEAN, которое я пытаюсь устранить.Я выделил проблему, но я не уверен, как это исправить, вот код.Я считаю, что позиция, в которой находится ошибка, помечена как таковая.
import { Component, OnInit } from '@angular/core';
import { AuthService } from '../../services/auth.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-success',
templateUrl: './success.component.html',
styleUrls: ['./success.component.css']
})
export class SuccessComponent implements OnInit {
user:Object;
constructor(
private authService:AuthService,
private router:Router) { }
ngOnInit() {
this.authService.getProfile().subscribe(profile => { //THIS CALL TO GET PROFILE CAUSES THE ERROR
console.log("GOT HERE (IN SUCCESS)");
this.user = profile.user;
},
err => {
console.log("ERROR" + err);
return false;
});
}
onLogoutClick(){
this.authService.logout();
this.router.navigate(['/']);
return false;
}
}
С помощью метода get Profile () здесь
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import "rxjs/add/operator/map";
import { tokenNotExpired } from 'angular2-jwt';
@Injectable()
export class AuthService {
authToken: any;
user: any;
constructor(private http:Http) { }
registerUser(user) {
let headers = new Headers();
headers.append('Content-Type','application/json');
return this.http.post('http://localhost:3000/users/register', user, {headers: headers}).map(res => res.json());
}
authenticateUser(user) {
let headers = new Headers();
headers.append('Content-Type','application/json');
return this.http.post('http://localhost:3000/users/authenticate', user, {headers: headers}).map(res => res.json());
}
getProfile() {
let headers = new Headers();
this.loadToken();
headers.append('Authorization', this.authToken);
headers.append('Content-Type','application/json');
console.log("GOT HERE (IN getProfile)");
return this.http.get('http://localhost:3000/users/success', {headers: headers}).map(res => res.json()); //PROBLEM IS HERE
}
loadToken() {
const token = localStorage.getItem('id_token');
this.authToken = token;
}
loggedIn() {
return tokenNotExpired('id_token');
}
storeUserData(token, user) {
localStorage.setItem('id_token', token);
localStorage.setItem('user', JSON.stringify(user));
this.authToken = token;
this.user = user;
console.log("GOT HERE...");
}
logout() {
this.authToken = null;
this.user = null;
localStorage.clear();
}
}
Любая помощь будет принята с благодарностью.Я видел подобные посты, но они не помогли мне в этом случае.
Также вот маршрут
router.get('/success', passport.authenticate('jwt', {session:false}), (req, res, next) => {
const user = req.user;
console.log("GOT HERE (IN the route file)");
return res.json({user: user});
//return res.json({success: true, msg: 'user is found'});
});