Published onFebruary 3, 2026会话只能有一个真相源:外部登录为什么不能在设备上存 token认证OIDCJWTASP.NET-Core-Identity安全接外部身份提供方时,把 id_token 存到设备上会同时撕裂撤销、冷启动和审计三个通道。从"单一真相源"出发拆解 Cookie 会话契约与 JWT 加固清单。
Published onJanuary 27, 2026大多数 bug 出在层与层的交界处:写代码前的两次停顿代码复用跨层数据流重构bug-预防工程实践重复代码导致的不一致和层边界的格式假设,是两类反复出现的 bug。它们的共同点是都能在动手前用一次停顿挡掉——拆解搜索复用与画数据流这两次停顿。
Published onJanuary 21, 2026测试的浪费来自选错层:用能证明行为的最小层,mock 接缝别 mock 系统测试VitestTestcontainersPlaywrightCI测试最大的浪费是写一堆容易过却覆盖不到真实失败的测试。从"选能证明行为的最小层"和"mock 接缝而非系统"两个原则拆解测试分层与取舍。
Published onJanuary 15, 2026把"工具放宽"误读成"标准降低":前端质量门禁背后的阈值语义前端质量ESLintVitestCI工程实践前端质量最常见的认知偏差是把 max-warnings 上限当额度、把测试的宽松搬进生产。从阈值的真实语义出发,拆解工具链各自在防什么。
Published onJanuary 8, 2026日志和架构测试守的是同一件事:让出问题时查得动、让边界不被悄悄打穿.NETSerilog日志模块化单体架构测试日志和模块边界看似无关,守护的却是同一件事:系统的可治理性。从"边界处记录"和"架构测试当守门人"两个角度拆解为什么靠评审记性守不住。