把所有东西整合到一起,以及启动夜晚所有崩溃的东西

2026年7月3日 devloggo

走查

六个阶段,其中一些相隔数月(auth,然后 blog,然后前端,管理面板,上传,然后 Caddy 和 compose 把一切绑到一起),没有一个曾在真实栈上一起运行过完整的走查直到实际启动检查:注册一个真实账户,在一篇文章上评论,喜欢它,报告它,以 seeded 管理员身份登录,写一篇带图片和视频的文章,审核一个评论,直接从他们的一个评论封禁一个用户。那种走查应该是简单的最后一步一旦每个单独的服务已经有它自己的测试套件通过。

大多数都很好,几乎令人失望在建这个东西这么久之后半期望着烟火。注册工作了,评论工作了,喜欢计数在没有刷新时更新,报告一个评论把它排队在管理面板完全在应该的地方,写一篇带实际图片和真实视频的文章通过整个上传路径通过最后几个这些条目没有单个打嗝。直接从他们自己的一个评论禁一个用户,只在单独处理程序测试中曾演过的东西,工作端到端在第一次真实尝试也。

悄悄使你的会话过期的 cookie

唯一一个真实的虫子走查揭露不是在任何单一服务内部,它只显示一旦所有东西一起运行了超过大概 15 分钟。登录应该保持你登录 30 天,那就是刷新令牌的全部要点,但 hooks.server.ts 中的静默刷新逻辑试图在每个普通页面加载读刷新 cookie:

if (!sessionFromAccessToken) {
	const refreshToken = event.cookies.get('refresh_token');
	if (refreshToken) {
		const response = await event.fetch('/auth/refresh', { method: 'POST' });
		...
	}
}

除了那个 cookie 是有作用域到 Path=/auth,故意的,所以浏览器从不在不真的需要它的请求上发送它,使它远离,比如说,MinIO 自己的访问日志一个不相关的媒体请求。这也意味着浏览器从不在这儿也发送它,在一个普通页面路由,因为没有这个代码运行在 /auth 下完全。event.cookies.get('refresh_token') 从不会找到任何东西,每单时间,在任何网站中的普通页面。

访问令牌本身只持续 15 分钟。所以实际效果,不注意直到我真的离开一个标签打开后来回到它,是"保持登录 30 天"悄悄意思"保持登录大概 15 分钟,"然后一个完全普通看起来的重定向回登录页没有理由任何人会猜不读这个确切的 cookie 作用域规则链。修复它意思要么拓宽那个 cookie 的路径要么从某处在 /auth 自己的作用域内部做刷新调用,我想在承诺到一个前坐着那个权衡,而不是拓宽路径只因它是更小的 diff。

评论 413 从不实际发生,据我能说

某处在一个更早测试会话我击中了一个 413 发布一个完全普通长度评论,没什么奇怪关于它,而它担心我足够写下它作为一个真实的虫子来修复。后来回去特别追它下来而不能复制它,不在 100 字节,不在 9 千字节,不正好在 10000 字符内容限制附近。Blog 自己的 JSON 解码限制对于评论是 64 千字节,英里以上任何东西真实评论曾到达,而没什么其他在栈里应该在任何地方附近那么紧。

最好的猜测,而它真的只是猜测:无论什么我那天击中差不多几乎一定是一个遗留从更早,远更多限制的 BODY_SIZE_LIMIT 我一直在用那个时间测试,什么像 3 MB 或甚至一个占位符的零,不一个真实限制从不曾出货。写了一个回归测试发布一个 9 千字节评论直接通过 Caddy 来锁定它现在正确工作,离开谜团完全一样未解决作为那个,一个旧配置幽灵而不是一个活虫子仍躲藏某处。不是所有东西可怕你在建某东西时击中学出是一个真实东西一旦你正确去看它。

什么仍坐在列表上

走查自己通过了。什么左不是虫子,它只是真实发布,我有意对待它作为它自己分开决定而不是什么一旦测试变绿自动发生:合并 devmain,推到真实 git 远端而看 CI 管道真的对抗一个真实容器注册表变绿而不是我自己机器,然后对一个真实域名或一个一次性运行生产 compose 覆盖完全只看 Caddy 的自动 TLS 真的试试它的东西第一次。没有那个曾发生过。全部六个阶段被建造并合并到 dev,每一个那些剩余步骤明确矿来触发当我准备好,不什么脚本决定对我。

什么真的卡在我

没有什么复杂隔离。散列一个密码,代理一个请求,上限一个身体大小,没有这个很难自己。什么真的花时间是所有东西满足所有东西其他:一个 cookie 路径对一个服务自己的日志关系决定悄悄破坏一个完全不相关的前端假定三个服务远离,一个大小限制在边缘悄悄遮蔽一个远更慷慨的一个两个层远在,一个客户端角色检查那看完全像安全直到你真的追踪什么发生一旦你对它撒谎。

开始这个整个项目大多因为我没不只是用 WordPress。最后学到更多关于那个片段的真实网络服务如何真的拆在一起,和一起破坏,比任何教程曾打扰显示我。Django 和 CS50 教我句法。建这个教我地方东西真的破坏。

仍然没有合并这个到 main。那部分仍然是矿来决定当。

0 条评论

登录 后即可评论。

登录

忘记密码?

还没有账号?