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

Angular 12.1.2中如何判断用户是否处于已登录状态?

JWT场景下用户登录状态判断方案

最高效的登录判断逻辑

  • 优先将后端下发的JWT存储在开启HttpOnly、Secure、SameSite属性的签名Cookie中,后端每次接收请求时直接校验Cookie内的JWT有效性即可,该过程时间复杂度为O(1),是目前性能最优的方案:
    • JWT本身是自包含的签名凭证,只要签名校验通过、未超出过期时间、发行方/受众等字段符合预期,不需要额外查询数据库即可直接判定用户登录有效
    • 你可以将用户ID、角色等基础信息直接写入JWT的Payload中,校验通过后直接取用即可,进一步减少不必要的数据库查询
    • 如果业务要求支持实时踢人、权限即时生效,只需要额外加一层Redis的JWT黑名单(存储失效JWT的唯一标识jti),校验完JWT签名后再查一次Redis即可,纯内存查询的延迟只有几毫秒,不会带来明显的性能损耗

签名Cookie校验方案的可行性

完全可行,而且这是目前工业界最推荐的JWT存储+校验方案,相比把JWT存在LocalStorage中手动加请求头的方案,优势更明显:

  • 浏览器会自动在同域请求中携带符合要求的Cookie,前端不需要额外编写逻辑在每次请求中挂载身份凭证,降低编码成本
  • 开启HttpOnly属性后可以完全避免XSS攻击窃取身份凭证,安全性更高
  • Cookie的签名机制可以防止内容被篡改,只要后端签名密钥不泄露,攻击者无法伪造出合法的凭证
    需要注意的是,校验不能只判断Cookie是否存在,必须完整校验Cookie内JWT的签名和有效性:
  • 攻击者可以自行构造同名Cookie发送给后端,仅判断Cookie存在会有伪造凭证的风险
  • 必须同时校验JWT的过期时间,避免过期凭证被复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 11:36:00