Javascript Angular 2 LocalStorage在刷新后清除
这里有个奇怪的小东西:) 所以,我要做的是,当尝试登录用户时,我想将access_令牌存储在localStorage中,并在localStorage中过期。这是工作“好”。但是如果我刷新页面,令牌也会消失。如果我想在单击登录按钮后看到添加的令牌,我需要重新启动控制台(F12)才能看到它们。你能看出我做错了什么吗 服务:Javascript Angular 2 LocalStorage在刷新后清除,javascript,angular,Javascript,Angular,这里有个奇怪的小东西:) 所以,我要做的是,当尝试登录用户时,我想将access_令牌存储在localStorage中,并在localStorage中过期。这是工作“好”。但是如果我刷新页面,令牌也会消失。如果我想在单击登录按钮后看到添加的令牌,我需要重新启动控制台(F12)才能看到它们。你能看出我做错了什么吗 服务: import { Injectable } from '@angular/core'; import { Headers, Http, Response } from '@ang
import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { AppSettings } from '../AppSettings.component';
import { Observable } from 'rxjs';
@Injectable()
export class UserService {
private headers = new Headers({
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
});
constructor(private http: Http) {
}
loginUser(email: string, password: string, remember: boolean) {
var data = {
'email': email,
'password': password,
'client_id': AppSettings.CLIENT_ID,
'client_secret': AppSettings.CLIENT_SECRET,
'remember': remember
};
return this.http.post(AppSettings.HOST + 'auth/login', data, {headers: this.headers})
.map(
(response: Response) => {
const loginData = response.json().Result;
return loginData;
})
.do(
responseData => {
localStorage.setItem('token', JSON.stringify(responseData.access_token));
localStorage.setItem('expires', JSON.stringify(responseData.expires));
}
);
}
}
如果我刷新页面,所有令牌也会消失
package.json
"dependencies": {
"@angular/common": "^2.4.8",
"@angular/compiler": "^2.4.8",
"@angular/core": "^2.4.8",
"@angular/forms": "2.4.8",
"@angular/http": "^2.4.8",
"@angular/platform-browser": "^2.4.8",
"@angular/platform-browser-dynamic": "^2.4.8",
"@angular/router": "^3.4.8",
"angular2-social-login": "^2.1.0",
"core-js": "^2.4.1",
"rxjs": "5.1.1",
"zone.js": "^0.7.7"
}
组件
import { Component } from '@angular/core';
import { UserService } from '../../services/user.service';
import { Response } from '@angular/http';
@Component({
selector: 'login-layout',
templateUrl: './app/views/login/login.component.html',
providers: [ UserService ]
})
export class LoginComponent {
user: {};
email: string = '';
password: string = '';
remember: boolean;
constructor(private _userService: UserService) {}
loginForm() {
this._userService.loginUser(this.email, this.password, this.remember).subscribe(
responseData => console.log(responseData),
error => console.log(error)
);
}
}
编辑:
import { Injectable } from '@angular/core';
import { Headers, Http, Response } from '@angular/http';
import { AppSettings } from '../AppSettings.component';
import { Observable } from 'rxjs';
@Injectable()
export class UserService {
private headers = new Headers({
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
});
constructor(private http: Http) {
}
loginUser(email: string, password: string, remember: boolean) {
var data = {
'email': email,
'password': password,
'client_id': AppSettings.CLIENT_ID,
'client_secret': AppSettings.CLIENT_SECRET,
'remember': remember
};
return this.http.post(AppSettings.HOST + 'auth/login', data, {headers: this.headers})
.map(
(response: Response) => {
const loginData = response.json().Result;
return loginData;
})
.do(
responseData => {
localStorage.setItem('token', JSON.stringify(responseData.access_token));
localStorage.setItem('expires', JSON.stringify(responseData.expires));
}
);
}
}
好的,在Firefox上检查。即使在刷新后,令牌也能正确存储。看起来像是铬的问题。以前有人来过吗 好的。。。发现访问localStorage crossbrowser时出现问题,您需要使用
localStorage[“key”]
愚蠢的错误……)
更多信息可在此中找到,上面的代码似乎没有问题。当页面从某个地方的代码加载/启动时,是否可以检查本地存储是否被清除?您是否使用匿名模式进行测试?我只能在两天内接受这个答案,因为我是回答它的人:)