这个博客做了快十年,一直是我一个人写,连评论都没几个人用。上个月突然想,要不做个会员系统吧,让读者也能自己写文章。
说干就干,结果一做就是一个多月。现在回头看,这事儿真比我想象的复杂多了。
第三方登录不是点个按钮那么简单
一开始想的很简单:加个QQ登录按钮,点一下授权就完事了。真做起来才发现,第三方登录的水有多深。
首先是流程问题。我一开始写的逻辑是:用户点QQ登录,授权成功,直接就登录了。后来才发现这不对——如果用户已经注册过了,应该直接登录;如果是新用户,应该引导他绑定邮箱设置密码;如果用户已经登录了,那点QQ登录应该是绑定账号,而不是新建一个用户。
光是这三种情况,我就改了三四次逻辑。更别说每个平台的回调地址、state参数、错误处理都不一样。QQ、微信、微博、GitHub、Gitee、飞书、抖音,七个平台,每个都有自己的一套。
最后我写了个OAuth基类,把通用逻辑抽出来,每个平台只实现自己的接口调用。这样加新平台就快多了——只要写个继承类,实现三个方法就行。
邮箱验证这事儿,折腾了我好久
会员系统做完了,下一个问题是:怎么防止垃圾注册?
答案很简单,邮箱验证。但真做起来,问题一堆。
先是SMTP配置。我用的是腾讯企业邮箱,一开始怎么都发不出去,后来才发现是服务器出口IP被邮箱服务商拉黑了。换了个端口,又遇到SSL证书问题,折腾了大半天。
然后是验证码逻辑。注册的时候要发验证码,修改邮箱也要发验证码,找回密码也要发验证码。我一开始把这三个逻辑写在了三个不同的地方,后来发现其实都是一回事——生成一个验证码,存到数据库,过期时间10分钟。干脆抽成一个公共函数,三处共用。
还有邮箱白名单。我不想让随便什么邮箱都能注册,就加了个后缀白名单,只允许QQ邮箱、163邮箱这些常用的。后来想想,这个功能后台能配置就好了,不用改代码。
资料完善度这个功能,比我想的有用
做会员中心的时候,我想加个资料完善度的功能。一开始觉得就是个进度条,显示用户填了多少资料,没啥技术含量。
真做起来才发现,这个功能其实挺有用的。用户登录进来,一眼就知道自己还差什么没填——头像没上传、昵称没设置、邮箱没验证、简介没写。进度条一拉,一目了然。
而且这个功能还能做权限控制。比如没完善资料的用户不能发文章,不能评论。这样就保证了社区的基本质量。
我把四个条件拆成了:头像、昵称、邮箱验证、个人简介。每个条件满足了就算25%,满100%就可以解锁所有功能。用户看到进度条往上走,也有动力把资料填完。
夜间模式这个细节,容易被忽略
前台有夜间模式,会员中心一开始忘了加。用户在前台开了夜间模式,点进会员中心,突然变成白底黑字,晃眼睛。
后来我把主题切换的JS抽出来,做成了一个公共文件,所有页面都引用。这样不管是前台、会员中心、还是后台,主题都是统一的。用户在任何地方切了主题,全站都跟着变。
这种细节看起来小,但用户体验差一点,用户就会觉得你这个东西做得不精致。
做系统这事儿,慢就是快
这一个多月做下来,最大的感受就是:别想着一口气做完,先把核心流程跑通,再慢慢加功能。
我一开始想着一步到位,注册、登录、第三方绑定、邮箱验证、资料完善、文章发布、评论……全想一起做,结果越做越乱,今天改这个明天改那个。
后来我干脆停下来,先把最简单的邮箱注册登录做出来,跑通了再加第三方登录,再加邮箱验证,再加资料完善。一步一步来,反而快了。
现在会员系统基本能用了,还有很多细节要打磨。但至少核心功能都在,用户注册登录写文章评论这条链路是通的。
做软件就是这样,没有完美的系统,只有不断迭代的系统。先能用,再好用,最后才是好用。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录