# EZLCP-java **Repository Path**: gzdavid/ezlcp-java ## Basic Information - **Project Name**: EZLCP-java - **Description**: Easy Low-code Platform backend source code - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 14 - **Created**: 2023-03-29 - **Last Updated**: 2023-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #
Easy Low-Code Platform (EZLCP) 后端 ### 一. 介绍 EZLCP低代码开发平台的Java后端,基于Spring boot 3.0技术,使用Spring Cloud 微服务架构开发。刚升级到Springboot3,目前只是搭建好了框架,功能正在完善中... 使用以下技术: ``` Spring Boot 3.0 Spring Cloud Gateway Spring Cloud OpenFeign Spring Cloud Alibaba Nacos mybatis plus 3.5.3.1 knife4j 4.0.0 resilience4j ... ``` PC前端项目代码:[https://gitee.com/IElwin/ezlcp-pc](https://gitee.com/IElwin/ezlcp-pc) ### 二、目录 #### 2.1 ezlcp-user 用户及系统相关模块 #### 2.2 ezlcp-log 日志模块 #### 2.3 ezlcp-form 表单模块 #### 2.4 ezlcp-flow 工作流程模块 #### 2.5 ezlcp-gateway 网关模块 #### 2.5 init 数据库初始化脚本、nacos配置导出包 ### 三、安全控制 #### 3.1 密码加密 在`s_settings`表中为各租户配置: `用户密码长度,密码强度`。前端的密码在传到后端接口时要加密(md5加盐,与getFirstPassword方法中的盐保持一致),后端接收到前端传来的密文,再调用getMd5Password方法再次加密后再保存到数据库;数据库中的密码是二次加密的,可以防止数据库记录复制密码粘贴到另一条记录(当时放弃使用Spring Security框架除了太重之外,另一个原因就是不能解决密文复制的问题)。 加密方法在com.ezlcp.commons.tool.Encrypt类中,如果重置数据库数据库中某用户的密码,修改main方法中的用户ID和初始密码,运行main方法就可以得到前端要传入的密文,以及保存在数据库中的密文。 #### 3.2 登录控制 在s_settings表中为各租户配置: `登录失败几次锁定账号,锁定时间,空闲多久自动登出,是否启用谷歌身份验证器,以及是否启用IP地址黑名单/白名单`,来增强安全控制,防止非法入侵。 #### 3.3 token 前后端分离,使用token验证客户端,不使用session和cookie。前端调用登录接口后获得token值(后台存在redis中),调用后台的其他接口时,需要将token值加到`Authorization`或`token`请求头参数中。相关微服务中配置拦截器(参考:`com.ezlcp.commons.config.InterceptorConfig`),校验token并将token对应的用户信息缓存在当前线程中,控制器或其他类中可以使用ContextUtil.getCurrentUser()方法,获取当前登录用户的信息。 #### 3.4 网关过滤器 `TokenRequestFilter` 统一拦截前端调用各微服务接口时请求头中是否带`Authorization`或`token`参数; `XssRequestGlobalFilter` 统一处理请求中的XSS攻击;因为ORM层使用的是Mybatis框架,SQL注入的可能性很小,所以只做XSS字符过滤。 以上两个过滤器都可以在`application.yml`中配置白名单。