
封面图
上一篇那个说看不懂的朋友,真动手了。他上了 Codex,搭了一周,做出个能用的小系统,登录是他自己让 AI 写的,还挺得意。
我没挑他毛病,AI 写的确实能用,登进去、取自己的数据都对。我就问了他一句:你干嘛不用现成的?
他愣了一下:登录还能用现成的?
就这一句反问,让我想写这篇。很多人卡在这儿,其实不是不会写。他们压根不知道登录根本不用自己从头写,这东西早被人做成现成的了。这篇就聊三件事:登录到底是个啥,为什么别自己造,还有我自己是怎么做的。
先说清楚,登录到底是个啥
你可能觉得登录就是一个填账号密码的页面。那只是你看得见的一小块。真把登录摊开,里面装着一大堆东西。
明面上的:注册、登录、记住你已经登过(省得你每点一下都重输密码)、忘记密码怎么找回、改密码。
底下还压着看不见的一层:密码怎么存才不会被人一锅端,有人拿字典狂试密码怎么拦,各种奇怪的输入怎么清洗干净。
再加上现在几乎人人都要的那几样:用微信、谷歌、Apple 一键登,注册发一条验证码短信,忘了密码发一封重置邮件。
这些堆一块儿,登录牵扯的东西一大串,早不是一个页面的事。而全世界每个产品要的这一套几乎长得一模一样。既然全世界都要、要的还都一样,它当然早被做成了现成的,接上用就行,犯不着从头造一遍。
让它跑起来不难,难的是它牵出来的一串
让登录跑起来那部分,AI 分分钟就给你搞定了。真正让人栽跟头的,是它背后牵出来的那一串。
先说最容易被忽略的边界和安全。这层的坑长得都一个样:不写也不报错,跑起来看着一切正常,直到哪天出事才发现漏了。这活儿你不是靠它吃饭的,很难想全,也不太值得把精力砸这儿。具体有哪些坑我这篇按下不表,反正这层水深,踩了雷往往还悄无声息。
验证码短信、找回密码邮件,背后都是一摊服务
你注册时收到的那条验证码短信、忘了密码收到的那封重置邮件,可能你以为是登录自带的。其实那背后,是两摊得你单独搭的服务。
先说发邮件。你没法拿自己的邮箱一封封发,量一大、内容又像模板,直接被当垃圾邮件拦掉。你得接一个专门发邮件的服务,还得把域名的几项解析配好(就是 SPF、DKIM 那一堆)。配不对,你发的验证邮件全进人家垃圾箱,用户收不到,还以为你这东西坏了。这亏我自己吃过,验证邮件发出去全没动静,排查半天,是域名没配对。说真的,光这一个发邮件,搭起来就够烦的。
发短信更麻烦。国内发验证码短信,得先在短信服务商那儿把模板提交报备、等审核过了才能发,还一条一条按钱算。更阴的是,发短信的接口要是不设防,被人写个脚本对着狂刷,一晚上几千块短信费就没了,这钱还得你自己认。
再往大了说,这些都还只是搭起来烦。你要真什么都自己扛,背后还得有台服务器一天到晚开着等人来,那是一笔每个月都在走的钱。用这些现成的服务,个人的量基本都落在免费额度里,一分不花。
还有那个“用谷歌登录”的按钮
那种“用微信登录”“用 Google 登录”的按钮,你天天见,可能觉得接起来很简单。
真自己接是这样:每一家你都得先去它的开发者后台注册一个应用,拿一串钥匙,配好用户登完跳回你这儿的地址,接住它给的凭证,再把这个人对上你自己的用户。一家就够折腾大半天。你想同时上谷歌、微信、Apple,那就是三份不一样的坑,各家规矩还都不同。
用现成的登录模块,这些基本是勾选框级别的事。想让人用 Gmail 登,把谷歌那项打开就有了,再要 GitHub、Apple 也一样,每家的脏活它早替你接好了。
这是我觉得用模块最划算的一笔。光让用户用谷歌一键登录这一个功能,自己做要好几天,用模块几分钟就好,还更稳。
那我自己是怎么做的
早年也试过自己一块块拼,拼到发邮件那关就烦了,前面那个验证邮件进垃圾箱的坑,就是那会儿踩的。
现在我用 Supabase 的登录服务。邮箱密码登录、谷歌一键登、还有前面那一整层边界和安全,它都替我弄好了。连发邮件也一并管了,注册确认、找回密码那些邮件它直接替我发,啥都没碰。
剩下我要干的,就是把它接到自己页面上,然后把精力搬回去做我这东西真正不一样的地方。它的免费额度,对个人做的东西够用得很。
有个选型上的门道值得说一下:Supabase 接不了微信登录。你要是做给国内用户、想要一个微信一键登的入口,就得换个能接微信的,比如 Logto。我一般看这东西是给谁用的再定用哪个。用现成的这些,麻烦其实不在会不会接,在得摸清每一个能干嘛、不能干嘛,照着自己的需求挑对。
最后
登录就是那种最典型的东西:全世界都要,要的都一样,背后还牵着一串看不见的服务和成本。这种东西,真犯不上自己造。
我那朋友后来也不自己写了。他说早知道有现成的,那一周能省下大半。
所以下次做东西,别一上来就闷头搭登录。先当它是个现成模块,挑一个接上,你的时间留着做别的。