王聪
(江苏大学 江苏省镇江市 212013)
由于办公系统与门禁系统由不同厂家开发,无法很好的进行协同,且人脸门禁系统功能相对单一,无法限制学生在指定时间内的门禁进出次数与进出的方向,导致部分学生利用系统漏洞,通过先请假出校,长时间逗留校外后再请假进校,达到夜不归宿、跨城出行等目的。这些行为违反了校规校纪,辅导员等学生管理人员,不得不通过人工查寝的方式来应对上述问题。人工查寝,不仅费时、费力,而且无法做到及时发现问题,难免会有遗漏。
现代Web 应用开发技术日新月异,Vue[1]和Spring Boot[2]等开发框架的诞生和成熟,使得较为快速地开发一个易用、多浏览器兼容、部署运维成本低的Web 应用成为可能。因此,为了加强对学生进出学校的管控,并减少辅导员需要人工查寝的工作量,本文基于Vue 和Spring Boot 等开发技术,通过分析学生在办公系统中的请假记录与校门门禁进出记录,设计并实现了一个可以帮助辅导员发现和核实存在夜不归宿等异常行为学生的辅导员小助手系统。
本系统主要为了辅导员发现存在夜不归宿等行为的学生服务,此外,为了使系统本身能够正常稳定运转,还需要专业的人员对系统本身进行管理维护,这就需要有系统管理员。故本系统主要用户有两类:辅导员、系统管理员。
功能性需求是指系统具体的完成某一任务的需要。
辅导员需要能够使用自己的账户密码进行登录,也可以使用学校的统一身份认证系统以中央认证服务(Central Authentication Service,CAS)[3]方式登录。除了登录,辅导员还能够退出系统。辅导员最核心的需求是对名下的学生进行管理,包括了学生基本信息查看和学生预警记录查看。其中,学生基本信息查看包含了学生基本信息、请假/门禁记录的查看功能,还包含了按照学号、姓名进行搜索学生的功能。学生预警记录查看则是辅导员能够查看经过系统自动计算出的存在异常门禁进出行为的学生。
系统管理员和辅导员一样,需要能够登录、退出系统。系统管理员最核心的需求是对整个系统进行一定的管理。包含了定时任务管理、邮件管理、操作日志三大功能。定时任务管理功能包含了对定时任务进行暂定、恢复、新增、删除、修改等管功能,还包含了查看定时任务执行历史记录、执行进度的功能。邮件管理功能包含了邮件发送、查看邮件发送日志的功能。最后,操作日志功能,实际上是一种审计日志查看功能,系统管理员通过该功能,可以查看所有用户在该系统中的所有操作记录,用于事后追查用户的异常行为。
如图1所示,系统从宏观上看进行了前后端分离。总共包含前端服务、后端服务和MySQL[4]数据库这三个部分。前端服务部署于Nginx[5]服务器,对外接收用户通过浏览器发出的请求并进行响应,对内通过HTTP 请求调用后端服务。后端服务和数据库都部署于Docker[6]容器中,通过Docker 内部的桥接网络通信,后端以对外暴露符合REST[7](Representational State Transfer)风格的接口来提供服务。
如图2所示,本系统从层次结构上可以分成:界面交互层、控制层、模型层、数据库访问层。安全认证服务贯穿各层始终。界面交互层主要由前端服务提供,用于处理用户的请求,并返回相应的处理结果给用户浏览器进行界面渲染。其他各层主要由后端提供服务。控制层对外暴露后端服务接口,将接收到的前端请求初步处理后,按照一定规则分发给合适的模型层处理。模型层在收到控制层传入的请求后,负责对请求进行一系列业务逻辑上的处理,处理中可能会需要调用数据访问层提供的数据处理服务。数据访问层负责直接与数据库交互,对外隐藏具体的数据库访问逻辑,提供统一的数据访问服务。整个系统经过分层之后,使得复杂的功能得以解耦,每层各负其责,有更清晰的职责边界,也有利于后续代码的开发和维护。
根据本文第2 节的功能性需求分析,可将整个系统划分为五个模块:认证服务模块、学生管理模块、定时任务模块、邮件模块以及操作日志模块。认证服务模块负责用户登录、退出等认证授权功能。学生管理模块负责学生基本信息、请假/门禁记录、学生异常预警记录的展示、查询等功能。定时任务模块负责定时任务的管理和任务执行日志查看功能。邮件管理模块负责邮件的发送和发送日志查看功能。操作日志模块负责审计日志查看、查询功能。
认证服务提供了系统登录、退出等功能,是整个系统的基础。总共提供了两种登录方式,分别为普通登录方式和统一身份认证登录方式。
普通登录方式指的是在本系统中直接登录,由于整个逻辑比较简单且与统一身份认证登录方式类似,故不在赘述。本系统使用了JWT(Json Web Token)作为用户登录成功后的令牌。JWT 令牌具有紧凑性和URL 安全性,它的典型应用场景是在网络中传递认证用户的身份信息[8]。用户在登录成功之后,后续前端浏览器都会缓存这个令牌,每次请求后端服务时会带上该令牌,用以校验用户的身份以及权限。使用令牌可以避免由后端来存储用户的会话信息,减少了后端服务的压力。统一身份认证登录方式指的是用户在统一身份认证中心登录再到本系统进行自动身份认证,实现逻辑图3所示。这里的关键点主要在于本系统的前端、后端与统一身份认证中心的交互。用户选择统一身份认证登录方式之后,前端将页面重定向到统一身份认证页面,用户在该页面登录后,由统一身份认证中心再将页面重定向回本系统,并传回CAS 令牌。此时,统一身份认证已经完成,接着前端需要拿着CAS 令牌让后端去校验,以确保CAS 令牌是真实有效的,后端向统一身份认证中心校验CAS 令牌后,获得用户信息,然后据此生成JWT Token 返回给前端,这部分就跟普通登录方式一致了。
学生管理模块主要包括学生基本信息查看、学生预警记录查看两大功能,是系统的核心功能所在。如图4所示,学生基本信息查看又包含了对于学生信息的搜索、学生请假/门禁记录的查看。如图5,学生预警记录功能主要是让用户可以查看经过系统自动计算得出的存在异常门禁行为的学生记录。学生管理模块侧重于数据的查询与前端页面的展示,后端服务通过Spring Data JPA 和MyBatis 这两大对象关系映射(Object Relational Mapping,ORM)[9]框架的混合使用,实现了带有分页能力的多条件数据查询功能。通常来说Spring Data JPA 对数据访问封装程度更高,可以实现零SQL(Structured Query Language)语句对数据库中数据进行操作,但是仅适合于数据模型比较简单的场景。而MyBatis 则需要更多的配置与SQL 编码,但是能够适应更复杂的数据处理场景,比如多表连接查询。故本系统为了各取所长,混合使用了这两种框架。
本文论述了基于Vue 和Spring Boot 等技术实现的辅导员小助手系统的设计与实现。首先介绍了项目的背景、涉及到的相关技术。接着从使用系统的用户、功能性需求等方面分析了系统的需求,进而引出了系统的总体设计,最后介绍了系统实现中涉及到的关键技术。
图1:系统总体架构
图2:系统层次结构
图3:统一身份认证登录时序图
图4:学生请假/门禁记录界面
图5:学生预警记录界面
总的来看,在良好的系统设计思想指导下,基于Vue 和Spring Boot 等技术能够快速的构建一个简洁、实用、美观的系统。本系统增强了学校辅导员对于学生夜不归宿等行为的掌握,减轻了辅导员人工查寝的工作量,发挥了在学生管理中的作用。