besscroft / PicImpact

PicImpact,分享你和世界!
https://pic.besscroft.com
MIT License
815 stars 123 forks source link

bug: 登录 Auth 的优化 #146

Open Zheaoli opened 2 weeks ago

Zheaoli commented 2 weeks ago

目前的问题

  1. 实现太复杂
  2. 因为目前实现的关系,密码错误的时候,会直接在服务端返回 500,并且抛出无法理解的报错信息,这一点是非常不对的

image

我倾向于使用 https://lucia-auth.com/ ,实现更为简单,2FA 也有良好支持 https://github.com/lucia-auth/example-nextjs-email-password-2fa

直接把这个 issue assign 给我吧,我把这块重构下

besscroft commented 2 weeks ago

我当初用 auth.js 是因为 Learn Next.js 里面用的就是这个,比较能很好的配合 middleware 来做各种功能,但是 auth.js 的实现确实是挺复杂的, 有些逻辑处理不好像后端语言那样做,是有点难受。

我大致看了下您发的 example 的 repo 的代码,也能够在 middleware 判断是否登录(auth.js 是用 req.auth 判断)。如果有更简单的方案的话,我觉得是可以的,麻烦您了!

如果重构这块功能,我看了下即使这部分数据库表全部换掉,也是不会影响业务表的。无非就是更新版本后,用户重新设置下密码和 2FA,是可以接受的。您在处理时可以注意规避下 edge 运行时的问题。

slept-yogurt commented 2 weeks ago

佬,部署完成后的默认账号密码有修改吗? 我用admin@qq.com和666666登录不成功,也是这个弹窗提示。

slept-yogurt commented 2 weeks ago

佬,部署完成后的默认账号密码有修改吗? 我用admin@qq.com和666666登录不成功,也是这个弹窗提示。

麻了,好像是vercel连接supabase不是很稳定,时断时续的。

besscroft commented 2 weeks ago

@slept-yogurt 免费的服务没法要求更多的,不稳定也没法说啥。不过建议您查看 supabase 的数据库所在 region,然后调整您 vercel 项目的 Function Region 至相应区域,可以适当缓解该问题。

例如 supabase 的 region 在 AWS | ap-northeast-1,代表服务器所在区域为 Asia Pacific (Tokyo),那么 vercel 的 Function Region 可以选择 Tokyo, Japan (Northeast) – hnd1,来尽量消除因物理距离上太远导致的高延迟以及路由过多线路切换导致的丢包问题。

当然您也可以选择用 TraceRoute 来测试最优路线,有的路线可能远了点,但是走的路由线路不错(比如走了 AWS 自家专线,那么肯定就比 NTT 线路好),也是可选的方案。