javascript - 如何实现记住我的功能?

标签 javascript angular typescript local-storage angular2-template

我正在做一个带有节点 js 后端的 Angular 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')
}

这是组件:

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);
     });
  }
}

最佳答案

使用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);
    ...
}

如果你想在全局范围内获取 isRemberMeChecked 值,你可以使用 angular service

关于javascript - 如何实现记住我的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49508979/

相关文章:

node.js - 使用 tsyringe 使用 Typescript 进行动态依赖注入(inject)

javascript - 如何中止打印?

jquery - 访问和/或操作元素的 angular 2/typescript 方式是什么?

asp.net - 值不能为空。参数名称: connectionString when i run add-migration

node.js - 在 Visual Studio 2015 中右键单击时缺少“还原包”选项

javascript - 如何仅使用 Angular6 在单击的按钮上设置事件类?

typescript - 在 Typescript 中使用 npm 模块

javascript - 通过jquery从javascript中的html字符串获取特定的id值

javascript - HTML5游戏——如何防止变量被修改

Javascript 正则表达式匹配捕获返回整个匹配,而不是组