基于SpringSecurity的高校通用报名系统的设计与实现

施 鹭

(芜湖职业技术学院 网络工程学院,安徽 芜湖 241003)

高校每年组织各院系学生与教师开展学科竞赛、技能大赛等活动,传统的报名和作品提交等工作费时费力,效率低,前期笔者与多个高校的教师和教学科研管理人员进行沟通、座谈,发现尚未有一套服务于高校学生参赛并可同时满足多用户、多角色使用需求的系统。

基于这些现状设计开发一套系统,以完成学生注册、项目报名、作品提交、人员组织等工作,同时对不同用户分配不同的使用权限。系统选用流行的Spring技术作为后端开发框架,选择SpringSecurity框架来实现基于角色的访问控制(Role-Based Access Control,RBAC)的权限管理模型,设计开发出通用的高校项目报名和作品提交系统。

1.1 软件系统中使用权限管理的必要性

这种必要性首先是出于安全性的考虑,比如误操作、人为破坏、数据泄露等情况。比如,对于数据库的访问,数据库管理员具有较高的权限;
软件开发人员则使用普通的数据库账号,其操作权限受到限制。这样的设计旨在防止开发人员对数据造成破坏性的操作。从数据隔离的角度来看,各部门负责人可以看到各自部门的员工信息。

1.2 RBAC权限管理模型

RBAC模型中权限与角色相关联,用户通过成为相应的角色成员而得到这些角色的权限。角色是为了完成某种工作而被创造出来的,用户则根据其责任而被指派成相应的角色。图1给出了RBAC模型中元素的相互关系。

图1 RBAC模型

用户可从一个角色被指派成另一个角色,可根据需求合并等条件而被赋予新的权限,而某个角色的权限也可被收回。

1.3 权限管理在软件系统中达成的目标

基于RBAC模型实现的权限管理系统已经完成了权限关系模型的抽象化处理,开发人员只需要根据软件系统的实际使用场景完成编码实现工作即可。该系统可提供如下管理:1)角色管理功能,即由管理员定义角色并给角色赋予权限;
2)“用户-角色”管理界面,由管理员给系统中用户赋予角色;
3)支持用户定义权限,即在新增功能时可以将需要保护的功能添加到系统。

2.1 角色和职责

系统管理员一般为学校的科研管理人员,负责维护所有的基础数据(包括二级学院数据的维护)和项目数据。

系部管理员一般为系部的学生活动负责老师,其职责是系部的数据维护,包括各个专业数据、班级数据、学生数据的维护工作。

项目负责老师一般为全校的专职教师,负责指导学生参与竞赛活动,其职责包括项目的数据维护、报名表的数据维护、报名数据统计及项目作品的下载。

普通学生选择参与项目,完成项目作品提交,维护个人数据等。

2.2 权限框架整合

首先是开发环境的搭建。设计人员使用流行的SSM(Spring+SpringMVC+MyBatis)框架作为后端的开发工具,选择SpringSecurity作为权限管理的框架,创建好Maven类型的项目,并利用pom.xml文件配置完成整个系统所需要的各个依赖组件包和用于编译、调试、运行及部署的插件。

在SSM框架整合完毕后,设计人员在系统中加入SpringSecurity依赖,以完成spring-security.xml核心文件的配置,主要完成不拦截的资源、拦截规则、定义跳转的页面、关闭跨域请求、加密的方式及加密类这几个关键参数的设置。

其次是配置SpringSecurity使用数据库认证。使用自定义的UserDetails和UserDetailsService工具类来完成设置。其中,loadUserByUsername方法提供给用户的控制层(controller)来调用,该方法接收主调者传入的用户名参数进行数据库查询,将得到的结果数据封装成为UserDetail对象并返回给主调者,然后,配置完成自定义页面login.html、success.html、failer.html等,以实现当认证成功、失败或注销账号时跳转到指定路径地址的页面。

2.3 用户、角色和权限模块数据库表设计

系统需要用户、角色、权限、访问记录日志等表结构,表users、role、user_role、permisson、role_pemisson对应了权限模型中的用户、角色和资源权限。通过表user_role和role_permission,可以实现用户和角色、角色和资源权限的关联关系。系统的业务场景是学生项目报名和作品上传,还需要系部表、专业表、班级表、学生表、教师表、项目表、项目报名表、操作日志记录表等。权限模型数据库表结构如图2所示。

图2 权限模型数据库表结构

2.4 系统主要业务模块的设计开发

系统基础数据的维护及实现流程如下:使用系统管理员账号登录系统,经过权限系统认证成功后获取系统管理员角色权限;
直接进入系统后台基础数据的管理页面,可以查看到学校所有系部(二级学院)数据,也可以查看到已有的全部项目及项目负责老师的数据,还可以对这些系统基础数据进行数据增删改查维护工作。此处最核心的配置有2个:1)系统管理员创建新项目,分配该项目的负责教师;
2)管理每个系部(二级学院)的信息,其中包括设置该系部的系部管理员。

系部基础数据的维护及实现流程为:使用系部管理员账号登录系统,认证成功后即可获取系部管理员角色权限;
进入系统后台系部信息管理页面,可查看到本账号所在系部的基本数据、系部的所有专业列表、专业所包含的班级列表以及每个班级所包含的学生列表,并对这些数据进行“增加、删除、读取、更新”的操作。

项目数据管理维护及实现流程为:项目负责老师登录系统,经认证后获取角色权限,进入项目管理页面后可查看项目的基本信息和学生报名表数据(包含所提交的作品文件)。另外,系统还提供一键打包下载功能,其具体的实现过程如下:后台提供单独的触发按钮,用户点击后,系统启动生成报名表PDF文件和上传作品文件的压缩服务;
服务完成后,页面上的立即下载按钮变成可点击状态,用户点击后通过浏览器或专门的下载工具下载打包的压缩文件;
下载完成后,后台服务器定时删除该打包文件,以释放服务器磁盘空间,节约资源。

项目报名和作品提交实现流程如下:学生注册账号后经系部管理员审核通过,在登录后进入项目报名和作品提交流程;
在首页可以查看当前正在接收报名的项目列表,选择项目后填写报名表信息,提交并上传文件,完成报名表的填写和作品提交。

2.5 安全模块的应用

系统各角色使用各自的登录账号通过统一的登录入口页面登录成功后,即可获得该账号的角色信息和权限列表信息,不同角色的可访问和操作对象就受到不同的限制。

从菜单权限来看,对于不同账号的人,显示的可操作模块也不同。比如,按钮权限的控制由SpringSecurity页面端的标签权限控制来实现。在显示项目详情页时,系统管理员可以操作一键下载按钮,而项目管理员则不可以执行此操作。

从数据访问权限来看,在Controller层代码进行了权限控制判断;
在项目列表页面来看,系统管理员可查询所有项目数据并可看到全部项目列表数据,而项目管理员只可看到自己的项目列表数据。

在项目的后期推广及使用过程中,不同的学校可能对于一些访问控制权限的使用有不同的需求,因此系统对于项目数据的多个功能级别的访问设计出了可配置的方案。比如,就每个项目本身的实时报名数据和报名统计数据图表是对所有角色开放查看还是只开放给项目管理员和系统管理员查看,可以由系统管理员在系统的管理后台统一设置。

本系统于2018年3月开发完成并上线部署,每年多次服务学生学科竞赛和大学生各类活动的报名和作品提交,取得了一定的社会效益。在学校大学生科技创新、创业大赛中,本项目承担了大赛的学生报名、作品上交、作品打包下载、数据统计展现等工作,取得了较好的实际效果。

该项目在使用过程中,由学校科研部门或创业中心部门的管理员,创建项目并设置项目管理员角色账号,学生注册系统后进行项目作品提交,各个项目管理员根据自身账号权限,完成本项目学生作品数据管理。总的项目管理后台页面如图3所示。在后续工作中,将继续完善系统的功能,比如增加学生数据的批量导入、更多的统计报表数据输出以及一定的数据分析。

图3 项目管理后台页面

猜你喜欢系部账号管理员我是小小午餐管理员儿童时代·快乐苗苗(2022年2期)2022-04-19彤彤的聊天账号数学小灵通(1-2年级)(2021年11期)2021-12-02施诈计骗走游戏账号派出所工作(2021年4期)2021-05-17我是图书管理员少先队活动(2020年8期)2020-12-18我是图书管理员少先队活动(2020年7期)2020-12-18可疑的管理员故事作文·高年级(2020年2期)2020-02-24我国社交媒体账号的对外传播之道——以“人民日报”Facebook账号“特朗普访华”议题报道为例新闻传播(2018年8期)2018-12-06Google Play游戏取消账号绑定没有Google账号也能玩CHIP新电脑(2016年3期)2016-03-10基于ISO思想系部层面本科教学质量监控体系建设思路探索中国当代医药(2015年24期)2015-03-01高职院校系部档案管理的问题与对策职教通讯(2014年2期)2014-08-15