You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular登录后未获取到用户名如何实现自动登出并清空本地存储

Angular 登录状态检测功能修复方案

现存问题

  • 语法错误:CheckLogin方法的if判断中使用了单等号=,属于赋值操作而非相等判断,该表达式返回值为undefined,布尔值为假,因此alert逻辑永远不会触发
  • 逻辑错误:localStorage.getItem未匹配到key时返回值为null而非undefined,原判断条件无法命中未登录场景
  • 触发时机错误:仅在提交按钮点击时触发检测,无法满足进入首页自动校验的需求

修复代码

main.ts

import { Router } from '@angular/router';
    
export class MainComponent implements OnInit {
  username: string | null = null;
  userId: string | null = null; // 补充缺失的userId类型声明
    
  constructor(private router: Router) {}
  
  ngOnInit(): void {
    this.userId = localStorage.getItem('userid')
    this.username = localStorage.getItem('username')
    // 进入页面立即触发登录校验
    this.CheckLogin()
  }

  CheckLogin() {
    // 同时判断null和undefined,使用三等号做相等判断
    if(this.username === null || this.username === undefined){
      alert('please login again');
      // 补充登出逻辑:清空本地存储+跳转到登录页
      localStorage.clear()
      this.router.navigate(['/login']) // 替换为你的实际登录路由
    }
  }

  onSubmit() {
    // 提交前先校验登录状态,不需要单独绑定两个click事件
    this.CheckLogin()
    // 原有提交逻辑写在下方
  }
}

main.html

<!-- 合并click事件,只保留一个即可 -->
<input class="submit-btn" type="button" (click)="onSubmit()" value="Submit">

内容的提问来源于stack exchange,提问作者Utsav Upadhyay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:27:03