typescript Angular 4,记住我功能
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/49508979/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Angular 4, remember me function
提问by Mat
I am doing an angualar 4 application with node js backend. I did the login form and all is good i want to implement the function remember me. Thank you in advance. This my login service:
我正在做一个带有节点 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')
}
This is the component:
这是组件:
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);
});
}
}
回答by Vala Khosravi
Use localStorage
instead of sessionStorage
使用localStorage
代替sessionStorage
In your case, you can do something like this:
在您的情况下,您可以执行以下操作:
if (isRemberMeChecked) {
...
localStorage.setItem('Name', credentials.firstName);
localStorage.setItem('token', credentials.token);
...
} else {
...
sessionStorage.setItem('Name', credentials.firstName);
sessionStorage.setItem('token', credentials.token);
...
}
If you want to get isRemberMeChecked
value globally you can use angular service
如果你想在isRemberMeChecked
全球范围内获得价值,你可以使用角度服务
回答by Swoox
What you want to do here is use localStoragefor the rememberMeand credentials.firstName. The credentials.tokenyou can store in the sessionStorage:
您在这里要做的是将localStorage用于rememberMe和credentials.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));
}
}
After a reload it will fetch the RememberMeand Name:
重新加载后,它将获取RememberMe和Name:
if(JSON.parse(localStorage.getItem('RememberMe')) !== null)
{
this.name = localStorage.getItem('Name');
this.rememberMe = JSON.parse(localStorage.getItem('RememberMe'));
}