Я пытаюсь войти в систему с помощью пользователей 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;
}
}
Возвращает консольный журнал аутентифицированного пользователя из серверной части, который, к счастью, работает как задумано, ноничего не хранится локально.Есть ли что-то, что должно быть включено для меня, чтобы иметь возможность хранить вещи локально, или это что-то еще, что может быть не так?
Изображение отладчика:
Изображение журнала консоли при входе в систему: