Mat*_*Mat 4 javascript local-storage typescript angular2-template angular
我正在使用Node js后端做angualar 4应用程序。我做了登录表单,一切都很好,我想实现该功能,请记住我。先感谢您。这是我的登录服务:
import { Injectable } from '@angular/core';
@Injectable()
export class loginService{
rememberMe: boolean;
constructor() { }
login(credentials) {
sessionStorage.setItem('Name', credentials.firstName);
sessionStorage.setItem('token', credentials.token);
}
getCostumer() {
const user = {
Name: sessionStorage.getItem('firstName'),
token: sessionStorage.getItem('token')
}
Run Code Online (Sandbox Code Playgroud)
这是组件:
constructor(private signInService: SignInService, private router: Router,
public dialog: MatDialog, private authService: AuthService) { }
ngOnInit() { }
login(costumer) {
this.loginService.login(costumer).subscribe((data) => {
this.authService.login(data);
this.router.navigate(['home']);
this.dialog.closeAll();
}, err => {
this.message = err._body;
console.log(this.message);
});
}
}
Run Code Online (Sandbox Code Playgroud)
使用localStorage代替sessionStorage
就您而言,您可以执行以下操作:
if (isRemberMeChecked) {
...
localStorage.setItem('Name', credentials.firstName);
localStorage.setItem('token', credentials.token);
...
} else {
...
sessionStorage.setItem('Name', credentials.firstName);
sessionStorage.setItem('token', credentials.token);
...
}
Run Code Online (Sandbox Code Playgroud)
如果您想在isRemberMeChecked全球范围内获取价值,可以使用角度服务
您在这里要做的是将localStorage用于RememberMe和凭据.firstName。您可以存储在sessionStorage中的credentials.token :
login(credentials) {
localStorage.removeItem('Name');
localStorage.removeItem('RememberMe');
sessionStorage.setItem('token', credentials.token);
if(rememberMe){
localStorage.setItem('Name', credentials.firstName);
localStorage.setItem('RememberMe', JSON.stringify(this.rememberMe));
}
}
Run Code Online (Sandbox Code Playgroud)
重新加载后,它将获取RememberMe和Name:
if(JSON.parse(localStorage.getItem('RememberMe')) !== null)
{
this.name = localStorage.getItem('Name');
this.rememberMe = JSON.parse(localStorage.getItem('RememberMe'));
}
Run Code Online (Sandbox Code Playgroud)