浙江理工大学信息学院本科生创新项目总结报告——简单的后台用户管理项目

信息学院本科生创新项目总结报告

 

研究目的与意义

基于Spring Boot框架等技术实现一个简单的后台用户管理系统项目,具有良好的用户交互体验、良好的信息反馈能力、安全防护措施,包括用户登录、用户注册、信息反馈、用户信息查询、管理员用户管理、权限控制与管理等功能。

通过对Spring Boot、Spring MVC、MyBatis、Spring Security等框架和相关技术的应用,了解掌握原理并实现功能——将理论转化为实践。运用Cookie、Session、分页操作、文件上传下载等Java Web基础知识。掌握Servlet封装、JDBC封装等基本能力。加深对MVC设计模式、三层架构、DAO模式的掌握和理解。同时完成一个简单的后台管理项目系统,解决Web应用基本的登录系统设计和用户管理问题。

 

研究内容与总体方案

基于Spring Boot、Spring MVC、MyBatis、Spring Security等技术实现一个简单的后台用户管理系统项目,具有良好的用户交互体验、良好的信息反馈能力、安全防护措施。包括用户登录、用户注册、信息反馈、用户信息查询、管理员用户管理、权限控制与管理等功能。

将所有账号分为管理员账号与用户账号两个大类。

管理员主要权限在于管理用户。

管理员拥有查看、更改用户信息、提升用户权限、冻结用户账户等权限。

本项目分为用户模块和管理模块。

用户模块,用户可以查看用户信息、修改用户的基本资料。

管理模块只有管理员能够进行使用,管理员可以修改用户的权限,也可以冻结或删除用户账号。该部分的权限不对其他用户进行开放,这部分模块含有系统的基础设置与初始化数据库等高风险性操作。

总体方案

项目前端采用Bootstrap框架简单美化并通过AJAX和后端进行交互。

项目后端采用Spring Boot框架,用java语言编写。

采用Bootstrap作为前端UI框架

Bootstrap 是基于 HTML、CSS、JavaScript 的,简洁灵活,能够跨设备,跨浏览器、还可以进行响应布局、CSS可以模块化、同时内置JavaScript插件、还有丰富的组件,使得 Web 开发更加快捷。

为了提供良好的用户体验,项目整体采用AJAX实现前后端交换,实现局部内容刷新,避免不必要的访问请求。

采用Maven作为项目管理工具。

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

后端接口采用RESTful的API接口

Spring Boot整合Spring MVC。

M即Model,模型层,创建了实体类User,实现登录、注册功能。同时采用RBAC权限模式,对每个对象类分为用户实体,角色实体和权限实体,三者之间都是多对多的映射关系。

V即View,视图层,摒弃后端冗杂的jsp文件,采用Spring Boot官方推荐的Thymeleaf作为模板渲染模型,同时利用Bootstrap进行简单美化。

C即Controller,控制层,通过控制器实现网站的具体功能。

为了实现用户的持久化,本项目采用MySQL作为数据库,使用Spring Boot整合的HikariCP作为数据库连接池,并用MyBatis作为数据持久化的API,MyBatis-Plus作为MyBatis扩展工具。通过Spring Boot整合的Hibernate接口和Spring Data的约定方法命名来实现对数据的增删查改和分页操作。

使用Flyway管理数据库SQL脚本,实现数据库创建、管理、同步。

安全技术方面采用了Spring Boot内带的Spring Security来实现用户登录时的用户名和密码检查,同时实体对象采用RBAC权限模型来控制访问权限问题,开启了Spring Security自带的CSRF防御,防止CSRF跨站攻击。对用户的密码使用了BCrypt技术加密,对所有密码进行加密,同时对敏感路径和方法进行权限限制和管理。

相关技术

前端:HTML、CSS、JavaScript、jQuery、AJAX、Thymeleaf、Bootstrap等

后端:Spring Boot、Spring、Spring MVC、Spring Security、MyBatis、MySQL、Flyway等。

 

研究方法

文献资料法

主要采用相关技术和原理学习、实践、整合开发出简单模型,发布测试,然后学习相关技术替换、模型升级优化,使项目更完善,更高效,更完整。

为了解当前企业对用户权限管理的主要需求,先登录一些大型Web应用项目,记录目前用户权限管理的基本方法。对用户权限管理有一个大致的了解,然后分析这个过程中可能存在的权限隐患,加以分析。再查阅相关论文,了解目前解决权限分级问题的主要方法,对这些方法进行研究,看是否存在着漏洞或可以改进的地方,并归纳这些方法是为解决什么类型的权限模型而产生的,并思考根据不同类型的应用,这些方法应该做出哪些修改。

行动研究法

结合实际,在实际的学习环节中,通过个案分析和作品分析等,实现具体的功能,反复测试,及时改进研究措施。

依靠已知的相关技术开发出简单的Java Web登录注册项目,并通过简单的逻辑处理防止未登录用户使用功能,并用AJAX完善了用户体验。将项目以war打包发送到服务器上进行发布并测试。

经验总结法

在实践和研究的基础上,根据课题研究重点,随时积累素材,探索有效措施,总结得失,寻找有效的提高效率和提高实际运用、实践能力的方法。

结合用户反馈和相关知识储备的提升,对项目进行重构,采用Spring Boot框架来实现。掌握JPA的增删查改和分页技术基本掌握。重构Java Web项目为Spring Boot项目并实现用户信息持久化。掌握和理解MVC设计模式、三层架构、DAO模式等设计模式,采用Spring MVC重构项目的控制层。进一步学习了JPA持久层和MyBatis框架,实现对持久层的优化。掌握Spring Security用户信息验证原理,优化用户登录和权限控制。

 

研究结果

DEMO地址:https://www.shentuzhigang.top:8443/MyZSTU/

浙江理工大学信息学院本科生创新项目总结报告——简单的后台用户管理项目

权限管理

对于权限分级,研究得到的权限解决方案为:使用Spring Security框架,对访问路径和方法进行保护,并在建立五张表,分别为resource、role、users、resource_role、user_role。浙江理工大学信息学院本科生创新项目总结报告——简单的后台用户管理项目

其中resource表储存受保护的访问路径和方法、role表储存角色、users表储存所有人员resource_role表储存路径和方法和角色的对应关系,user_role表储存用户和角色的对应关系。

当用户或管理员(user)在访问一个受保护的路径和方法时,Spring Security先从user_role中得到该账号所拥有的角色的所有权限,再对比所访问的路径方法是否在的权限集中,若user携带有可以访问改路径的角色,则访问通过,否则访问被拦截。

管理员不可修改和其同等权限或具有比其更高权限的账号,也不可将低权限账号的权限提高到和其同一权限或更高权限。

对于权限的修改操作,只需在user_role中,为账号添加、修改、删除相应角色即可。

 

参考文献

[1] Java从入门到精通(第4版).明日科技著.清华大学出版社

[2] Java Web从入门到精通(第3版).明日科技著.清华大学出版社

[3] 龙中华.Spring Boot实战派.电子工业出版社

[4] 王松.Spring Boot+Vue全栈开发实战.清华大学出版社

[5] 朱要光.Spring MVC+MyBatis开发从入门到项目实战.电子工业出版社

[6] [美] 凯·S.霍斯特曼著.Java核心技术卷2高级特性(原书11版).陈昊鹏译.机械工业出版社

[7] [美] 梁勇.Java语言程序设计(进阶篇).阿姆斯特丹亚特兰大州立大学著.戴开宇.复旦大学译.机械工业出版社

[8] 杨开振.《深入浅出Spring Boot 2.x》.人民邮电出版社.2018

[9] 张琪.基于角色的权限管理系统的设计与实现.电子科技大学

[10] Bootstrap 官网 https://getbootstrap.com/

[11] Spring Boot官网 https://spring.io/projects/spring-boot