EAR_v3 《浮声三》 智能化图书管理系统
EAR_v3 《浮声三》
搭建于 Actix_Web 框架下的智能化图书管理系统
本项目的前身是 《Rusty_Borders 危墙》 的 在线控制系统 部分,经过大量开发工作和重构,现作为常规项目发布。
自 2024 年 10 月项目确立,作者进行了大量的开发和修改,后经广泛测试,现已投入部署。
示例网站:欢迎
本项目最初采用 Iron_Web 框架开发,但由于该库长时间停止维护,导致其对其他库的兼容性大大降低,并且性能和技术成熟度尚有不足。
是此版本采用 Actix_Web 作为网站主框架,带有 redis-session 组件的 Actix_session 库作为网站 Token 交互库。
本项目遵循GPL v2.0协议。
本项目在设计之初被规划为一个智能化图书管理系统,基于 Rust 语言,依赖库包括 Actix_Web、Tokio、OpenSSL 等。
本项目不是云原生。
本项目包括前端部分、后端部分和数据库部分。
本项目实现的交互性功能:(详见下文)
- 用户注册、登录、注销、修改个人信息等。
- 借阅、归还图书等。
- 单会话登录。
- 验证码机制。
- 邮件机制。
- 集中会话检查。
本项目无成熟的部署程序,若使用硬编码则会出现兼容性问题,而配置文件会使项目安全性降低。
有任何意见或建议请联系作者:kjx52@outlook.com
*注:第 0.10.1 版本的 Actix_session 库所依赖的 Redis 部分有兼容性问题,请自行更改软件树
项目信息
版本:2.1.2
作者:Jessarin000 ,本名 Kjx52 ,现名 Skiner, 独立开发者
发布日期:2025/2/25
项目地址:EAR_v3
本项目开发环境为 Windows 11、Windows Server 2022 Datacenter。
本项目开发使用 1.84.0 版本的 Rust 编译器。
截至布前,本项目共经过 2 次公测, 5 次大型测试,262 次小型测试。通过率为 92.3%。
发布前,本项目已修复了所有已知 Bug。
本项目属于常规项目。
作者尽力确保其安全性,但因水平有限,若是百密之中有所纰漏,还望各位告知本人。
作者联系方式: kjx52@outlook.com。
*本项目会使用到一些隐私数据,用户应根据本地环境进行修改。
浮声三 标志性徽标
更新日志:项目内容与亮点
经过一个月紧锣密鼓的开发后,是此版本在健壮性、性能、安全性、兼容性和灵活度上都有了长足的进展。
本项目的亮点包括:
- 奉行“左移安全”原则 由于作者拥有安全开发的背景,故在该网站设计之初就将其安全性考虑了进去。
- Actix_Web框架和Tokio的强大性能 在Rust开发环境下,各类库都能拥有很高的性能,而前文所提道的两位无疑是它们当中的强者,拥有其他框架无可比拟的成熟度和广度。
相较于 EAR_v3_1.4.8 ,是此版本进行的重大更新有:
引入Redis: 在服务器运行过程中,服务器状态会无可避免地逐渐增大,若是将其依旧 push 到运行内存中,则会严重影响网站性能,而面对不断更新迭代的用户数据,MySQL 又会显得力不从心。是此版本使用高
速缓存的 Redis 服务来解决这个问题,并且整个运行体系也围绕着这个新的数据中心进行了一系列调整。实现了单会话机制: 是此版本使用 MySQL 作为长期存储的数据库,而 Redis 则用于缓存高交互的零碎数据。二级存储方案则应运而生,该计划不仅可以避免数据冲突、提高网站整体安全性、避免性能损耗,也同时
实现了用户数据的跨设备迁移。更新了scope: 是此版本添加了用户注册和信息修改两大逻辑类,从 raw 数据过滤、到格式化 Redis 吞吐,再到邮件发送,共计 12 个模块。更新了模块交互机制,降低耦合度,改善兼容性。更新了路由分组,添加了几个中间件,可以更好地解析日志和用户请求。
完善了身份验证机制: 在早期版本中,未持有有效 token 的用户访问 /access 路径下的页面均会被重定向至 login 页面,这显然不合理,是此版本使用 wrap 中间件的集中身份检查策略来应对这一点。在此版本中,中间件会检查用户请求 URL,若无权访问,则响应 login 界面,登陆后则直接导向原请求 URL 处。
取消了GET参数: 对于大多数网站来说,GET参数是必不可少的,这也造成了大量的安全漏洞,是此版本使用嵌入式网站路径进行改进。
随机路径填充邮件地址: 出于安全性考量,是此版本使用随机生成的 32 位字符串作为邮件链接路径,Actix_Web 的路由管理机制完全有能力将该路由进行妥善处理。
删除了WebSocket模块: 该模块几乎可以肯定会对网站安全性造成威胁,并且由于作者功底太薄,无法对其进行优化,故最终废弃。该模块原先被用于在用户信息更新时向前端推送变更数据。
实现了SSL加密传输: 是此版本使用 HTTPS 进行数据传输,增加安全性。
UI界面美化: 修复了许多 UI 错误,重制和美化了一些界面,包括独具特色的 Err 和 404 界面。
函数优化、Bug修复: 拆分和重组了众多函数,修复了大量 Bug ,更新了软件树。
下一版本(绝对不可能有)作者或许将着手于云原生。
一些截图
浮声主界面
浮声注册界面
邮件已发送
邮件界面
浮声浏览界面
浮声详细信息界面
浮声用户个人信息界面
404 界面
浮声三配套启动器
详细信息页面后端显示
浮声三面对扫描器
本项目遵循GPL v2.0协议。
本项目允许使用者修改、移植并再发布源码,但“当你发布它的时候,请确保你的项目使用者享有你曾经拥有的所有权力”。
让我们看到你的创意:D。
本项目或将推出 Linux 版本。
后记
这次的项目花了将近一个季度的时间才完成,寒假也没了:(
这也是作者第一次尝试全栈开发。
虽然很简陋,但下一个项目将会好很多。
并且至少我承诺的功能都实现了。
有任何问题、意见或建议请随时联系作者kjx52@outlook.com。
开学快乐;)
Jessarin000
2025-02-27 作
EAR_v3 《浮声三》 智能化图书管理系统的更多相关文章
- Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)
1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...
- SSM整合案例:图书管理系统
目录 SSM整合案例:图书管理系统 1.搭建数据库环境 2.基本环境搭建 2.1.新建一个Maven项目,起名为:ssmbuild,添加web的支持 2.2.导入pom的相关依赖 2.3.Maven静 ...
- 基于jsp+servlet图书管理系统之后台万能模板
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- Java swing项目-图书管理系统(swing+mysql+jdbc)
(一)项目功能分析 该项目是设计一个图书管理系统,主要包含的内容有: (1)管理员登陆界面 ->信息录入 ->登录 ->重置 (2)图书管理系统总界面 ->子界面菜单: 1)图 ...
- 作业六—图书管理系统(SPEC)系统性能评估测试
一.图书管理系统的典型用户和场景: 该系统是为各类学校图书馆和社会各大图书馆和书店管理者使用的图书管理系统.但是我们还是已北京工业大学耿丹学院图书馆为典型用户进行主要设计的! 二.SPEC测试的目标: ...
- 基于jsp+servlet图书管理系统之后台用户信息删除操作
上一篇的博客写的是修改操作,且附有源码和数据库,这篇博客写的是删除操作,附有从头至尾写的代码(详细的注释)和数据库! 此次删除操作的源码和数据库:http://download.csdn.net/de ...
- Vue.js—实现图书管理系统
前 言 今天我们主要一起来学习一个新框架的使用--Vue.js,之前我们也讲过AngularJS是如何使用的,而今天要讲的Vue.js的语法和AngularJS很相似,因为 AngularJS ...
- Linux-基础学习(四)-部署图书管理系统项目
部署图书管理项目需要以下软件 项目文件(django项目文件夹) 数据库文件(django项目对应的数据库文件) centos7(linux本体) nginx(反向代理以及静态文件收集) uWSGI( ...
- 在Django中使用ORM创建图书管理系统
一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等 ...
- Django练习——图书管理系统
Django图书管理系统 创建一个项目 1. django-admin startproject 图书管理 2. cmd 命令终端下创建一个app python manage.py startapp ...
随机推荐
- Qt编写跨平台视频监控系统(64通道占用7%CPU/支持win_linux_mac等)
一.前言 视频监控组件经历过数十年的迭代,从最初的只简单播放个rtsp视频流,到现在支持各种音频视频文件格式(mp3.wav.mp4.asf.rm.rmvb.mkv等).支持各种视频流格式(rtp.r ...
- Qt可视化大屏电子看板系统全平台效果图
- 在CLion中如何为CMakeLists.txt文件添加第三方依赖库
cmake_minimum_required(VERSION 3.5)project(ImageBasedModellingEdu)set(CMAKE_MODULE_PATH "${CMAK ...
- C#中Newtonsoft.Json(Json.NET)的使用
C#中Newtonsoft.Json(Json.NET)的使用. 添加引用: using Newtonsoft.Json; 调用代码: //获取图书列表 List<BookInfo> bo ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持 UDP .TCP .WebSocket 三种协议,支持 iOS ...
- 解决 raw.githubusercontent.com 无法访问的问题
解决 raw.githubusercontent.com 无法访问的问题 电信默认 DNS 直接遮蔽 github DNS 1: 61.139.2.69 DNS 2: 218.6.200.139 C: ...
- JVM实战—13.OOM的生产案例
大纲 1.每秒仅上百请求的系统为何会OOM(RPC超时时间设置过长导致QPS翻几倍) 2.Jetty服务器的NIO机制如何导致堆外内存溢出(S区太小 + 禁NIO的显式GC) 3.一次微服务架构下的R ...
- 【问题解决记录】vue解决低版本安卓与ios10以下系统兼容性问题
问题描述: 项目中的企业微信内部应用,使用Vue-cli搭建的H5页面web,在低版本的安卓手机或ios8.0.9.0中出现接口数据访问失败,HTTP状态码返回0的问题,无法正常使用系统.安卓手机主要 ...
- CDS标准视图:安排维护计划的调用 I_MAINTENANCEPLANSCHEDULE
视图名称:安排维护计划的调用 I_MAINTENANCEPLANSCHEDULE 视图类型: 视图代码: 点击查看代码 @AbapCatalog.compiler.compareFilter: tru ...
- JIRA/Jira-cloud Rest API
官方参考: https://developer.atlassian.com/cloud/jira/platform/rest/v3/ 记录部分有用的 获取用户: /rest/api/2/users/s ...