如果登录后没有找到值,注销用户?



我试图将用户详细信息保存在本地存储中,因此,当用户登录并在主页值即用户名未找到时,用户应该注销并警告并清除本地存储了。但我不太清楚如何使用Angular来做到这一点。

检查如果用户名未定义,则应该注销

在首页,登录后,我正在存储数据-main.ts

import { Router } from '@angular/router';

export class MainComponent implements OnInit {
username: string | undefined;

constructor(private router: Router) {}

ngOnInit(): void {
let date: Date = new Date();
this.userId = localStorage.getItem('userid')
this.username = localStorage.getItem('username')
}
CheckLogin() {
if(this.username = undefined){
alert('please login again');
}
}

在<<p> strong> main.html我在提交按钮上调用函数

<input class="submit-btn" type="button" (click)="onSubmit()" (click) = "CheckLogin()" value="Submit">

如果用户名未定义,它应该显示一个警告,但警告也没有显示。

我一般的意思是,如果有任何方法来检查页面是否没有用户名值,那么它会显示警报和注销用户?

登录页面工作正常,它获取用户数据并存储在本地存储器中。

应该是

if(this.username == undefined){
alert('please login again');}

你做了一个赋值而不是条件

不知道如何实现代码背后的想法。请参考angular的文档。io来学习Angular的基础知识。例如,构造函数用于初始化变量。OnInit是在组件初始化后调用的,任何函数都不应该放在里面。

你的代码应该是这样的:
constructor(private router: Router) { }
ngOnInit() {
let date: Date = new Date();
this.userId = localStorage.getItem('userid')
this.username = localStorage.getItem('username')
}
CheckLogin(){
if(this.username === undefined){
alert('please login again');
}
}

问题的关键是使用赋值操作符(=)和相等操作符(==)。

除了基础之外,通常的安全性是使用实现CanActivate的角形守卫来完成的。这可以防止用户激活组件并将其重定向到另一个组件(例如登录屏幕)。互联网上关于angular和route guard的内容太多了,在这里提供任何代码基本上都是无用的。

另外,我强烈建议您使用State Library,而不是直接与存储系统对话。简单地说,在您的代码中,没有组件知道用户名是否为空,或者组件之间可能共享的任何其他值是否发生了变化。NgRx, NGXS, Akida只是举几个例子,没有特别的顺序。

最新更新