组件或服务上的 Angular 本地存储?

标签 angular typescript angular-services angular-components angular8

我正在使用 Angular8 并尝试制作登录表单。

我有一个 auth.service,我使用 post 请求发送登录信息

auth.service.ts

login(form: FormData) {
    return this.httpClient.post<UserLogin>(`${this.AUTH_SERVER}/api/function.php`, form);
}

我有一个登录组件,它将获取表单数据并将其发送到服务

login.component.ts

login() {
    const formData = new FormData();
    formData.append('action', this.loginForm.value.action);
    formData.append('email', this.loginForm.value.email);
    formData.append('password', this.loginForm.value.password);

    this.authService.login(formData).subscribe(
      (res) => {
        this.authService.isLoggedIn = true;
        localStorage.setItem('ACCESS_TOKEN', "isLoggedIn");
        this.router.navigateByUrl('/admin');
      },
      (err) => console.log('err', err)
    )
  }

我的问题是,在组件中、订阅中使用本地存储是否可行,在哪里成功,还是应该在服务中?

如果服务更安全,我怎样才能让它只在登录成功时设置 token ?

谢谢

最佳答案

是的,最好在服务中使用 Handel token

在您的auth.service.ts中添加一个方法

setToken(token) {
    this.authService.isLoggedIn = true;
    localStorage.setItem('ACCESS_TOKEN', token);
}

并在您的login.component.ts

login() {
    const formData = new FormData();
    formData.append('action', this.loginForm.value.action);
    formData.append('email', this.loginForm.value.email);
    formData.append('password', this.loginForm.value.password);

    this.authService.login(formData).subscribe(
        (res) => {
            this.authService.setToken(yourtoken);
            this.router.navigateByUrl('/admin');
        },
        (err) => console.log('err', err)
    )
}

我希望这会有所帮助

关于组件或服务上的 Angular 本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58104917/

相关文章:

typescript - 为什么私有(private)属性是接口(interface)的一部分?

angular - Angular 7 中检测到循环依赖

angular - 如何声明一个可选的注入(inject) @input 参数?

events - 有没有办法在 Angular 2 中简洁地绑定(bind)多个事件?

javascript - 如何解决并非所有代码路径都返回值的问题?

javascript - 如何在 Angular js 中创建动态工厂?

Angular 5 HttpClient GET : SUCCESSFUL if in constructor FAILS when ngOnInit

arrays - 无法获取数组 Angular 中的第一项

asynchronous - Angular 2 - 显示来自 promise 的异步对象数据

typescript - 如何在 Typescript 中扩展/覆盖导出的类型