这篇文章要记录的是南工在线的用户系统上线过程中经历过的风风雨雨,在这个工大几乎人尽皆知的网站的背后有深藏功与名的 Mars 工作室,而我现在是 Mars 的管理人。

在这里插入图片描述

本网站仅支持内网访问

这样一个网站,经历过几代人的努力,多次的重构,我们一直在紧跟时代的潮流,用着最新的技术,没有像很多项目一样,止步不前。光从网站的前台页面很难感受到这是一个多么庞大、复杂的系统,但他的架构是十分优秀的,我真的非常佩服学长们的努力。

而促使我写下这篇文章的动力,正是前些天,我与一位自称“全栈工程师”的土木学院的老师的对话开始的。他是想找我们工作室外包 web 和小程序。问我们做过哪些项目,很遗憾,南工在线被他轻视了,哎,这位全栈老师和大部分老师一样用着上古年代的技术,对很多知识也是一知半解,一点都不能理解 Online 有多么优秀以及我们为其付出了多少心血,也使我想到各位网站的访问者是否也是如此想的呢?于是我想写下这些文章,不是为了口诛笔伐,而是慢慢记录 Online 的风风雨雨,第一篇,就从我担任负责人起的第一件大事,也就是上线用户系统开始罢。

关闭视频评论和留言的那天

我入学的时候,南工在线距离现在还差两个版本,当时用的技术栈我亦不清楚,但我有参与到影视与软件的上传工作,当时的 Online 有视频留言与发送弹幕功能。

大家不用注册用户,只需要自己设置一个用户名,再填写留言内容,就可以发表留言了,听起来是挺方便的,但这样的状况只维持了大概不到半年。

它结束的信号是这样的,有一天,某位辅导员联系到我,说有人用他的名字作为昵称发表留言。

果然,担心的事情还是发生了,而这些冒充别人的可恶的家伙,却怎样都删不干净。于是当时管理的学长果断的关闭了评论与留言功能。

这一关,就是一年半载。

需求之下开始他的征程 - 捣乱的家伙又来了

再后来,网站用 vuetifyUI 重构了,我们不断的认识到,想要再上一层,我们需要除了用户留言之外互动,比如说视频留言,播放记录,收藏等功能,为此我们需要用户系统。

第一版的用户系统,在这样的需求之下诞生,用户注册需要提供邮箱密码昵称,即可以完成注册,不需要给用户邮箱发送专门的验证码。

不给用户邮箱发送密码,实际上是想方便用户注册?由于之前没有搞过用户系统,我们很难估计我们的网站的访问量有多少,虽然之前想过应该很多,但是没想到有这么多,一晚上大概就有几千个用户注册了。但这样的决定,实际上是错误的,因为我们没有想到学校里的憨憨会这么多。

幸好,这错误的决定只维持了一天,一群人里总会有那么几个被称为害群之马的坏家伙,这次,他们又来了。用一些根本不存在的邮箱注册了账户,并且取了很多违背社会主义核心价值观的名字。我将它们封禁,他们又会用新的邮箱卷土重来,如果当时我的能力足够强,我真想把他们都揪出来示众!

邮箱注册失败的原因 - 与信息中心的联络

迫于这些捣蛋鬼,我们只好将所有注册用户的数据清空,毕竟这个过程也没耗费什么精力,着手布置了新的注册功能,第二版的用户系统注册需要和邮箱绑定,并且为了保证一位用户只能注册一个邮箱,我们想到了我们的校园邮箱@njtech.edu.cn,有了它,我们就可以定位到每一个用户的身份,那应该不会有人再造次了。

而用户注册的时候发送的验证码,用阿里云的邮件服务,给用户提供的校园网邮箱发送验证码,很经典的邮件注册流程。这套想法听起来天衣无缝不是?但是上线了第一天,就出现新的问题,有很多人反应收不到邮箱验证码。

这问题着实为难住我们了,并且当时设置了没有注册邮箱的用户是绝对无法访问到我们的网站资源的,这意味着这些用户这些天无法访问我们的网站。

最后我一步步联系到了学校邮箱的管理员,原来是考虑到网络安全问题,发送的大部分验证邮件被拦截了,头疼,不过经过她的分析,我也认为从邮件管理员的角度来看是挺不安全的。

到当时,似乎状况陷入了僵局,用户系统的开发止步不前,要放弃用户系统吗?

信息中心的大力支持

其实和信息中心的老师,也就是上文中提到的邮箱管理员进行过交流之后,我把我们的困境和她详细说明了。实际上,我们是隶属于信息中心的学生组织。

之后的一天中午,我在实验室里突然收到了该老师的短信,问我有没有空去信息中心开会,就聊网站用户系统的事情,我去了。老师们都挺热情的,我还记得信息中心的主任是位女性,特别有气质。她们希望能把南工在线接入智慧南工,这样不仅我们可以更好实现用户系统,还能够增大智慧南工的影响力。老师还和我聊了许多,比如说如果有些功能有困难,他们可以帮助我们实现等等。

会议结束后,我心怀着感激接受了校园 Oauth 单点登录的文档,并且在工作室成员们的努力下,加班加点的实现了单点登录。

我们成功接入了智慧南工。很欣慰,即使是实现了用户系统,也没有利用到校园网以外的资源,南工在线依然在仅仅依靠着南工。

在这里插入图片描述

React GoGoGo

用户系统上线之后,每天的访问量能过万,也有数万师生登陆过我们的站点,这无疑是一件让人无比自豪的事情。

在寒假期间,大家纷纷离校,由于我们的网站不对外网开放,访问的人就少了下来,也就是这段时间,南工在线又迎来了他的脱胎换骨。

这次我们的前端用 React 重构,并且没有依赖 UI 框架,手写样式。

而我们的后端,也第一次用上了 Go 语言,对并发有了高度的支持。

有意思的是,前不久 B 站也用 Go 语言重构了后端。

期待疫情过后的开学,南工学子将看到的崭新的南工在线。

在这里插入图片描述