首次来源:京东 2021 面试部门零售
你们ERP系统的登录是怎么实现的?是单点登录还是什么?
最后更新:2026-10-30 · 基于第 1 次作答
结论:登录体系先分清"单机登录 / 单点登录 SSO",再讲 token 方案与安全细节。 关键词:Session → Token · Redis 存储 · SSO · JWT vs CAS · 同账号互踢 边界:内部系统常做"单机 + 同账号互踢",对外多系统才需要真 SSO。
核心考点定位:面试官想听的是"你们怎么做的 + 为什么这么做",重点是 SSO 的判定和 token 的存储/过期/互踢设计。
机制链(≥3 环):
证据锚点:
Redis:存 token 实现分布式会话共享,value 可含用户信息,key 用 token 或 userId。互踢:同一 userId 只保留最新 token,旧 token 失效(key 覆盖 或 维护 token→userId 反向)。SHA256+盐:密码不存明文,加随机盐避免相同密码同哈希(防彩虹表)。JWT:无状态、自包含、跨域方便,但不可主动失效;CAS:集中认证中心,适合多系统统一登录。对比与权衡:
| 方案 | 状态 | 跨域 | 主动失效 | 适用 |
|---|---|---|---|---|
| Session | 服务端有状态 | 需粘性/共享存储 | ✅ | 单应用 |
| Redis Token | 服务端有状态 | ✅ | ✅ | 分布式、可互踢 |
| JWT | 无状态 | ✅ | ❌(靠短过期) | 跨域、高并发 |
| CAS | 集中 | ✅ | ✅ | 多系统统一 SSO |
常见误区:
适用边界:如果系统只有一个应用且无跨域需求,Redis token 即可;多系统(如 ERP 下多个子系统)才升级 CAS/JWT SSO。
【结论】 面试官您好,我们 ERP 系统用的是单机登录,不是单点登录——它保证一个账号同一时间只有一个会话,用 Redis 存 token 实现。
【三点】 第一,我们最初用 Session,后来分布式部署后 Session 无法跨实例共享,就换成 Token 方案:登录成功发一个令牌,客户端后续带这个令牌访问,令牌存 Redis 里并和账号绑定,这样所有实例共享同一份会话状态。第二,实现同账号互踢是核心:同一账号再次登录时,用 userId 作为 Redis 的 key 覆盖旧 token,旧 token 下次校验就失效了,保证同一时间只有一个 token 在用一个账号——这对内部 ERP 防止账号共享很有用。第三,安全细节我们做了几层:登录时校验验证码防止暴力破解;密码不存明文,用 SHA256 + 独立盐哈希存储,防止拖库后彩虹表破解;同时记录登录的 IP、时间、机器型号做审计。因为这是纯内部系统,没接微信/第三方登录,账号出问题就找 IT 重置密码。
【边界】 当然,这套是"单机 + 互踢",不是真正的单点登录——SSO 的核心是"一次登录,多个系统复用",比如统一认证中心(CAS)或者 JWT 无状态跨域,适合 ERP 下面挂了多个子系统、用户要在子系统间免登录跳转的场景。我们只有单一系统,所以没上 SSO;如果以后系统变多,我会优先考虑 CAS 集中认证或 JWT 双 token,并权衡"可主动失效(Redis)"和"无状态跨域(JWT)"的取舍。
题目:你们ERP系统的登录是怎么实现的是单点登录还是什么
难度:low
标签:real-interview, computer/security, company/京东
评分:⭐⭐⭐☆☆(3/5)
我们之前 ERP 系统登录是使用的单机登录,不算单点登录。账号同时间一个账号只能有一个。使用的方式是 Redis 验证当前这个账号是否在线,如果在线的话,会剔除上一个 Token,保留当前的最新的这个 Token 用户。登录方式是最开始我们其实是用的 Session,后来为了晋升使用分布式,把 Session 换成了 Token,然后发一个令牌,拿这个令牌去访问接口。这个令牌在 Redis 中存储,并且跟账号绑定。如果另一个账号申请了这个令牌,就会把上一个账号退出去,确保同时间只有一个 Token 在一个账号下使用。今日的登录过程,我们会记录登录的 IP 地址、IP 信息,然后登录时间,登录机器的型号。校验时外侧增加了验证码校验,防止有人试密码。由于是内部系统,没有做微信登录之类的功能,直接就是个人账号。如果出现某人账号出现问题了,可以申请 IT 部去进行重置密码。我们密码存储使用的是加密存储,用的是SHA256+独立盐,存储的。
优点:明确"单机登录非 SSO";Redis 存 token + 同账号互踢的机制清晰;Session→Token 演进理由正确;密码 SHA256+盐、验证码、登录审计细节真实。
不足:没答透"单点登录还是什么"的对比——没讲 SSO 的标准方案(CAS 集中认证 / JWT 无状态跨域),停在"我们不是 SSO"。
补充:SSO 核心是"一次登录多系统复用",区分"单机互踢"和"真 SSO"是本题得分点。
完整讲解见上方「完整讲解(权威版)」