JeeSite 4 架构特点、安全方面、为什么好、工匠精神、不忘初心

原创
2020/08/13 23:49
阅读数 5.3K

1、底层架构

  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 了,减少开发和后期维护成本。
    • 所有列 @Column 定义均放到类头,而不是分布到各个属性或方法上,非常好,主要是有如下原因:
    • 一是,放到表头的好处是,可一览熟知该实体类对应的物理表结构是什么样,开发者思维从物理表结构到对象的映射转换,都是基于物理表结构的,减少后期代码分析的维护成本,@Column 指定物理字段名,而不是指定类上的属性名,也是这个原因;
    • 二是,生成的 SQL 和查询条件,可定义列的排列顺序,方便核查定义,优化查询,提升性能;
    • 三是,方便 @JoinTable 关联表和其它扩展信息的设置,如果分布到类的属性上就不太好管理列。
  7. 数据权限:不仅仅是角色,颗粒度细化到每个人员的身上,可自定义第三方数据权限,不仅仅是部门和公司,你可以扩展,如:地区,栏目分类,商品分类,无需让你多写代码,简单调用即可实现复杂的数据权限控制。
  8. 缓存监控:采用 J2Cache 二级缓存,支持快速切换为 Redis 缓存,支持集群 Session 和系统缓存共享
  9. 服务器监控,查看 CPU,内存,JVM,磁盘信息等。方便运维人员分析系统负载情况。
  10. 支持 SAAS 多租户模式:每个租户数据通过 corp_code 字段进行分离,数据互不干扰。
  11. 支持 Spring Cloud 架构:分布式,微服务,最小化内核,统一配置中心,统一授权认证中心。
  12. 树结构的图特设计:提高运维、数据分析、优化查询。
  13. 多用户类型支持:员工、会员、专家、往来单位等。
  14. 丰富的内置功能:用户权限、数据权限、系统管理。
  15. 定时任务在线配置,界面化生成 cron 表达式,支持集群环境自适应,调度日志监控。
  16. BPM 业务流程模块:基于 Flowable,支持退回、自由流、会签等高级应用。
  17. 在线预览系统:文件管理、在线预览图片、文档、文本、视频等格式
  18. 消息推送:APP、短信、邮件、微信,你无需了解消息是怎么发送出去的,只需了解消息发送接口即可。
  19. 提供丰富的移动端接口、第三方系统调用接口,轻松实现授权认证、数据调用(支持 json、xml 等格式)
  20. 国际化的支持,页面标签国际化,字典菜单国际化,数据国际化(中文、英语、日语等)。
  21. 在线代码生成工具,操作简化及优化,支持多数据源(单表、主子表、树表、Cloud等模板,支持自由扩展)。
  22. 在线查询在线人员,强踢在线账号。
  23. 提供丰富的在线文档及案例。

2、安全方面

  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 地址的白名单,否则拒绝访问

3、用户界面

  1. 基于 Bootstrap 平面化界面设计,精细,更加美观、高端、大气、上档次,支持ie9+及其他任何浏览器。
  2. 支持手机或平板访问,响应式样式、响应式布局,根据屏幕分辨率自适应控件布局。
  3. 无刷新设计,除了进入功能页面和新页面,其它情况下全部采用 Ajax 交互,优化体验和性能。
  4. 支持一键换肤,只需在 yml 里修改下主题名称即可快速切换整个UI的风格,不仅仅是色调和样式,布局也可改变。支持自定义扩展项目独有的主题样式风格。
  5. 优化用户功能操作,大众思维模式,功能清晰,更加贴切和友好。

4、前端开发

  1. 采用当前比较流行的 Beetl 模板引擎,它的优点很多,大家可自行查阅看看,这里不多说了。
  2. 封装 Beetl UI 通用组件,简单实现基本表单控件、树选择,列表选择,文件上传,等等,总之是简化开发。
  3. 数据表格 jqGrid 组件封装,自动完成分页、排序、列宽、多表头、子表、编辑表、等。
  4. 支持前后分离应用,方便与手机 API 接口对接,Token 方式授权。

5、功能及组件

  1. 工具类 Utils 封装优化,应有尽有,包分类层次分明,独立工具类项目。
  2. 强大的 Excel 导出导入工具封装,支持大数据量,注解定义,简单配置即可实现。

6、我们的优势

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

了解更多:http://jeesite.com/docs/

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部