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

Angular登录校验失效 账号密码对错均提示登录成功问题求助

问题根因分析

1. 核心问题:后端未做身份校验

你当前的Spring Boot后端的/patientlogins接口没有配置身份校验逻辑,无论请求头中携带的账号密码是否正确,接口都返回2xx成功状态码。Angular的HttpClient请求只要收到2xx状态码就会执行subscribe的成功回调,因此无论输入的账号密码是否正确,都会触发登录成功的提示。

2. Angular侧额外逻辑缺陷

auth.service.ts的登录请求成功回调中,仅给服务内部的成员变量赋值,没有将用户信息写入sessionStorage:

  • 后续调用isUserLoggedIn()方法时永远返回false,即使本次提示登录成功,后续页面鉴权也会判定用户未登录。

修复方案

后端(Spring Boot)侧修复

如果你使用Spring Security实现Basic Auth校验:

  1. 配置SecurityFilterChain,指定/patientlogins接口需要认证
  2. 自定义UserDetailsService实现,从数据库查询对应用户的ID和密码做匹配
  3. 校验失败时接口返回401未授权状态码,此时Angular会自动触发subscribe的错误回调,显示登录失败提示。

前端(Angular)侧修复

修改auth.service.ts的authenticationService方法,登录成功后将用户ID存入sessionStorage:

authenticationService(patId :number, password: String) {
  return this.http.get(`http://localhost:8080/patientlogins`,
    { headers: { authorization: this.createBasicAuthToken(patId, password) } }).pipe(map((res) => {
      this.patId = patId;
      this.password = password;
      // 新增会话存储逻辑
      sessionStorage.setItem(this.USER_NAME_SESSION_ATTRIBUTE_NAME, patId.toString())
    }));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:00