认证这件事,感觉上早就被解决了——直到你接手一个其实没解决好的代码库。开始重写 Leverage OJ 的时候,我发现认证系统其实是三个问题穿了一件外套:一个在 PM2 下会出问题的 Session 配置、一个演变成独立平行宇宙的 ContestUser 认证体系、以及一套差一次配置泄露就会全库密码暴露的哈希方案。
这些问题都不是一眼能看出来的。系统在运行——用户可以登录,Session 能持久化,比赛能正常进行。但"能运行"和"正确"是两回事,看得越仔细,就越能看到一个基于不再成立的假设运转的系统。
Session 哪里出了问题
大约 10 分钟
