我正在尝试使用Angular(6.0.2)登录用户,我这样做是通过将“当前用户”保存到本地存储,但没有任何内容存储 . 这是代码:
import { Injectable } from '@angular/core';
import { Observable, of } from 'rxjs';
import { map, catchError } from 'rxjs/operators'
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Userlogon } from '../_models/Userlogon';
import { User } from '../_models/User';
const HttpOptions = {
headers: new HttpHeaders({ "Content-type": "application/json" })
};
@Injectable({
providedIn: 'root'
})
export class AuthService {
loginobject: any;
private usersUrl= '/api/v1/accounts/';
private logonUrl= '/api/v1/auth/login/';
private logoutUrl= '/api/v1/auth/logout/';
constructor(
private http: HttpClient
) { }
login(username: string, password: string) {
this.loginobject=JSON.stringify({"username": username, "password": password});
return this.http.post<any>(this.logonUrl, this.loginobject, HttpOptions)
.pipe(map(user => {
if (user && user.token){
localStorage.setItem('currentUser', JSON.stringify(user));
return console.log(user);
}
}));
}
logout(){
localStorage.removeItem('currentUser');
return this.http.get<any>(this.logoutUrl).subscribe(response => console.log(response));
}
}
这是Auth-Guard:
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { AuthService } from '../_services/auth.service';
@Injectable({
providedIn: 'root'
})
export class AuthGuardService implements CanActivate {
constructor(
private router: Router,
) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
if(localStorage.getItem('currentUser')){
return true;
}
this.router.navigate(['/login'], { queryParams: { returnUrl : state.url }});
return false;
}
}
它返回来自后端的经过身份验证的用户的控制台日志,幸运的是工作有意,但没有任何内容存储在本地 . 有没有什么东西可以让我能够在本地存储东西,还是其他可能是错误的东西?
调试器的图片:
登录时控制台日志的图片: