JeeSite v4.2.3.3 发布,多处优化改进

来源: 投稿
作者: ThinkGem
2021-05-20

升级内容

  • 用户管理界面增加按角色查询用户下拉框查询条件

  • 增加 shiro.contentSecurityPolicy 请求头配置参数

  • 新增分离前端的rememberMe功能,简化记住我的功能开发

  • 跨域参数 Header 支持 x-ajax, x-token, x-remember,兼容旧版命名:__ajax, __sid,预计下个中版本正式采用新版本命名,请求参数名 __ajax, __sid 不受影响

  • addTabPage 新增 data-layer-full=”true” 参数,弹窗后接着最大化

  • 中文化图片预览下面的几个操作按钮(放大、缩小、旋转等)

  • 角色授权接口 userService.saveAuth 支持非员工用户类型的授权

  • 新增表格表单实例 demoFormTableForm.html

  • 增加 session.sessionIdCookieSecure 配置参数

  • Entity 增加 dataMap 内置属性;支持 Cloud 环境;支持 @RequestBody 方式接受 fileupload 的参数

  • 修正分页 count 条数少于 pageSize 时,设置一个未知页号仍然返回了数据的问题

升级方法

  • 修改 pom.xml 文件中的 jeesite-parent 版本号为 4.2.3-SNAPSHOT

  • 如果你导入了 jeesite-common 源码项目,请与 git 上的代码进行同步

  • 如果你导入了 jeesite-module-core 源码项目,请与 git 上的代码进行同步

  • 如果你是跨版本升级,请注意每一个版本的升级方法,业务上有调整的地方进行修改

  • 执行 root/package.bat(sh) 打包脚本,强制更新依赖即可。

 

=========   产品档案   =========

 

平台简介

JeeSite 快速开发平台,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,基于经典技术组合 Spring Boot、Spring MVC、Apache Shiro、MyBatis、Beetl、Bootstrap、AdminLTE 采用经典开发模式,让初学者能够更快的入门并投入到团队开发中去。在线代码生成功能,包括模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、工作流等。采用松耦合设计,模块增减便捷;界面无刷新,一键换肤;众多账号安全设置,密码策略;文件在线预览;消息推送;多元化第三方登录;在线定时任务配置;支持集群,支持SAAS;支持多数据源;支持读写分离、分库分表;支持微服务应用。

JeeSite 快速开发平台的主要目的是能够让初级的研发人员快速的开发出复杂的业务功能(经典架构会的人多),让开发者注重专注业务,其余有平台来封装技术细节,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。

JeeSite 自 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,JeeSite 架构精良、易于扩展、大众思维的设计模式、工匠精神打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》奖杯,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。

JeeSite4 的升级,作者结合了多年总结和经验,以及各方面的应用案例,对架构完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有很大的进步,在不忘学习成本、提高开发效率的情况下,安全方面也做和很多工作,包括:身份认证、密码策略、安全审计、日志收集等众多安全选项供你选择。努力为大中小微企业打造全方位企业级快速开发解决方案。

简要优势

JeeSite 整体架构清晰、技术稳定先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。

JeeSite 功能全,JeeSite 的知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要你学会使用这些功能和组件的应用,就可以顺利的完成系统开发了。

JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制你去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。

大家都在用 Spring ,在学习 Spring 架构的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,JeeSite 也一样具备强大的扩展性。

发展至今 JeeSite 平台架构已经非常稳定,JeeSite 是一个专业的平台,是一个让你使用放心的平台。

架构特点

  1. 以 Spring Boot 2 为基础,Maven 多项目依赖,模块分项目,松耦合,方便模块升级、增减模块

  2. 模块化的数据库自动升级程序,当模块升级代码需要更新数据库时,自动执行对应版本 SQL 脚本

  3. 功能授权模块灵活,按钮级别,支持 单点登录、第三方登录,丰富的扩展模块,简单 yml 配置即可实现

  4. 支持多数据源,深入 MyBatis 底层事务,从 DAO 层切换多数据源,方便快捷,彻底的解决必须从 Controller 里切换数据源的麻烦。并且支持,分布式事务,跨应用级别的事务,简单 yml 配置即可实现

  5. 数据表主键优化思想,如分类科目表,采用有意义的主键方式,让客户去自定义,减少后期运维维护成本

  6. 独创 @Table 注解(优于MyBatis-Plus,也可共存)在 MyBatis 基础上 Dao 层封装:

    • 自动生成增删改 SQL,不需要在 mapper.xml 里写重复又费时的 SQL 了,减少开发和后期维护成本

    • 列表查询条件通过实体自动生成,不用你写各式各样的 *Wrapper、手写字段名、if判断查询条件等

    • 所有列 @Column 定义均放到类头,而不是分布到各个属性或方法上,非常好,主要是有如下原因:

    • 一是,放到表头的好处是,可一览熟知该实体类对应的物理表结构是什么样,开发者思维从物理表结构到对象的映射转换,都是基于物理表结构的,减少后期代码分析的维护成本,@Column 指定物理字段名,而不是指定类上的属性名,也是这个原因;

    • 二是,生成的 SQL 和查询条件,可定义列的排列顺序,方便核查定义,优化查询,提升性能;

    • 三是,方便 @JoinTable 关联表和其它扩展信息的设置,如果分布到类的属性上就不太好管理列

    • 解决 80% 的基础 SQL 编写,后期维护增减字段方便,只需修改该数据和界面即可

  7. Beetl:为什么去选择 Beetl 这个前端模板语言:

    • 它性能非常好,相比 Thymeleaf 好太多,甚至比 JSP 都快上 2 倍,入门也简单很多

    • 它易于模块化,分布式应用,html 格式的文件,可以放到各个模块 jar 包里

    • 它易于扩展,非常方便的去自定义 form 标签,函数,格式化数值、支持 Layout 等

    • 最重要的是:它学习成本非常低,其实就是 js 的语法,如果会 js,则 Beetl 也就会使用了

    • 一般在前端开发周期中,可能会一半以上的时间,去写界面,调布局,做出来的界面还非常不好看,

    • 我们针对这个目的,去封装了前端各种组件,各种函数方法,

    • 让你使用简单的组件,调用复杂的功能,让你只去关注业务;

  8. 数据权限:不仅仅是角色,颗粒度细化到每个人员的身上,可自定义第三方数据权限,不仅仅是部门和公司,你可以扩展,如:地区,栏目分类,商品分类,无需让你多写代码,简单调用即可实现复杂的数据权限控制。并且支持跨应用、跨进程的微服务级别的数据权限控制

  9. 缓存监控:采用 J2Cache 二级缓存技术(Caffeine + Redis)支持快速切换为 Redis 缓存,支持集群 Session 和系统缓存共享

  10. 服务器监控,查看 CPU,内存,JVM,磁盘信息等。方便运维人员分析系统负载情况

  11. 支持 SAAS 多租户模式:每个租户数据通过 corp_code 字段进行分离,数据互不干扰

  12. 支持 Spring Cloud 架构:分布式,微服务,最小化内核,统一配置中心,统一授权认证中心

  13. 树结构的图特设计:提高运维、数据分析、优化查询

  14. 多用户类型支持:员工、会员、专家、往来单位等

  15. 丰富的内置功能:用户权限、数据权限、系统管理

  16. 定时任务在线配置,界面化生成 cron 表达式,支持集群环境自适应,调度日志监控

  17. BPM 业务流程模块:基于 Flowable,中国式工作流、支持退回、自由流、会签等高级应用

  18. 在线预览系统:文件管理、在线预览图片、文档、文本、视频等格式

  19. 消息推送:APP、短信、邮件、微信,你无需了解消息是怎么发送出去的,只需了解消息发送接口即可

  20. 提供丰富的移动端接口、第三方系统调用接口,轻松实现授权认证、数据调用(支持 json、xml 等格式)

  21. 国际化支持,页面标签国际化,字典菜单国际化,数据国际化(中文、英语、日语等)中文key方便后期维护

  22. 在线代码生成工具,操作简化及优化,支持多数据源(单表、主子表、树表、Cloud等模板,支持自由扩展)

  23. 文件上传组件,支持分片上传,断点续传下载,上传上传排序、预览、图片压缩等

  24. 集成云存储客户端模块,已支持:阿里云OSS、腾讯云COS、七牛云、MinIO

  25. 表单提交前后的差异数据分析,新值和旧值比较,较大文本展示差异数据结果

  26. 在线查询在线人员,强踢在线账号

  27. 提供丰富的在线文档及案例

  28. 支持国产化软硬件

安全方面

  1. 系统采用Java 语言开发,具有卓越的通用性、高效性、平台移植性和安全性(适应全行业的软件)

  2. 分层设计层次清楚,低耦合,各层必须通过接口才能接入并进行参数校验,保证数据操作的安全

  3. 双重验证,用户表单提交双验证:包括服务器端验证及客户端验证,防止用户通过浏览器恶意篡改(如不可写文本域、隐藏变量篡改、上传非法文件、用户角色越级授权等)避免客户端跳过验证直接操作数据库

  4. 安全编码,用户表单提交所有数据,在服务器端都进行安全编码,防止用户提交非法脚本及SQL注入获取敏感数据等,确保数据安全

  5. 密码加密,登录用户密码进行SHA1散列加密,此加密方法是不可逆的。保证密文泄露后的安全问题

  6. 强制访问,系统对管理端链接都进行用户身份权限验证及权限,防止用户直接获取资源

  7. 数据库密码及其它安全密钥自动加密配置(只需配置参数即可实现,无需使用复杂的秘钥生成功能)

  8. MyBatis 参数采用安全接受,特殊操作都必须经过 SQL 安全过滤,杜绝 SQL 注入问题

  9. 所有请求参数获取,均通过 XSS 跨站脚本过滤方法,杜绝 XSS 问题

  10. 乐观锁简单实现,避免一条数据多人同时操作时的数据覆盖,提高数据安全性

  11. 通过 yml 简单配置,轻松解决 JS 是否允许跨域操作,自适应跨域情况

  12. 身份认证:

    • 登录失败多少次后显示验证码

    • 登录失败多少次后锁定账号及锁定账号时间

    • 登录账号密码可加密后再提交后台

    • 同设备是否允许账号多地登录

  13. 密码策略:

    • 初始密码修改策略,提醒或强制用户修改初始密码

    • 账号密码修改策略,多长时间内未修改,则提醒或强制修改密码

    • 开关控制密码修改多少次内不允许重复,验证与上次或前几次的密码是否相同

    • 开关控制账号密码修改最低安全等级,很弱、弱、安全、很安全,四个等级,强制或提醒

  14. 权限审计:

    • 账号密码审计(未修改初始密码、使用简单密码、定期未修改密码、长期未登录、未设置密保、以上全部、审计结果数据导出)

    • 菜单权限审计(根据菜单及权限查询,都有哪些用户)

    • 用户权限审计(根据用户查询,都有哪些菜单及权限)

  15. 登录提交信息加密(支持 DES 加密、Base64加密等)

  16. 支持设置获取客户端IP的Header名称,防止IP伪造

  17. 支持设置允许的请求方法设定(如:仅允许 GET、POST 请求)

  18. 是否允许账号多地登录,如果设置为false,同一个设备类型的其它地点登录的相同账号被踢下线

  19. 是否允许多账号多设备登录,如果设置为false,其它地点登录的相同账号全部登录设备将被踢下线

  20. 是否允许刷新主框架页,如果设置为false,刷新主页将导致重新登录。如 银行系统 个人首页不允许刷新

  21. 是否允许嵌入到外部网站iframe中(true:不限制,false:不允许)

  22. 是否允许跨域访问 CORS,解决 Cookie 跨域访问问题

  23. 是否允许跨域访问时 CORS,可以使用的方法和响应头(如:仅允许 GET、POST 请求)

  24. 是否允许接收跨域的 Cookie 凭证数据 CORS 设置

  25. 是否允许的网站来源地址,不设置为全部地址(避免一些跨站点请求伪造 CSRF)

  26. 是否在登录后生成新的Session(默认false)安全系数更高的系统设置

  27. 可设置多个允许的内部系统 IP 地址的白名单,否则拒绝访问

展开阅读全文
8 收藏
分享
加载中
最新评论 (1)
不错
2021-05-20 08:54
0
回复
举报
更多评论
1 评论
8 收藏
分享
返回顶部
顶部