我试图将用户详细信息保存在本地存储中,因此,当用户登录并在主页值即用户名未找到时,用户应该注销并警告并清除本地存储了。但我不太清楚如何使用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只是举几个例子,没有特别的顺序。