中控BFF架构设计方案
Last updated
Last updated
Permalink
Cannot retrieve contributors at this time
应用加载动态配置并初始化应用相关项完成应用启动
前端发送API请求,请求将被分为客户端请求与管理端请求两个部分:
客户端:仅开放数据访问权限,并开放跨域以支持不同域名下请求访问数据
管理端:同时开放读、写操作权限,并进行用户权限、数据格式校验以及SSO登陆鉴权,同时对用户的操作进行记录
经过控制器处理后开始访问服务层,服务层根据具体请求开始访问数据库并返回相应数据或操作结果
请求经过处理后返回相关数据或相关错误情况,同时访问将会被日志系统记录
配置的加载: 默认配置将包括应用基本信息、中间件、错误处理等,对于SSO鉴权插件及数据库连接将根据环境 动态配置或通过Appllo在项目启动时进行动态配置。
应用初始化: 初始化将包括项目启动、辅助函数注入、Appllo配置动态加载等,在项目启动时进行统一初始化操作。
操作记录: 操作记录中间件用于记录Admin用户所执行的__增、删、查、改__ 操作记录, 以便监控和查询具体的操作执行人与操作时间等数据,增强系统的安全稳定性。
Utils辅助函数 utils函数用于帮助快速开发、减少开发工作量以提升开发效率。 目前utils包括返回数据格式封装、日期格式化、mysql查询语句序列化等函数。
配置示例:
控制器 控制器负责与相应的路由相匹配,解析用户的输入,处理后返回相应的结果。 官网中控的控制器将分为客户端与管理端两个部分:
客户端:仅开放数据访问权限,并开放跨域以支持不同域名下请求访问数据
管理端:同时开放读、写操作权限,并进行用户权限、数据格式校验以及SSO登陆鉴权,同时对用户的操作进行记录
服务层 服务层负责将逻辑和展现分离,保持业务逻辑的独立性。 主要内容包括与数据库的交互并对数据库的查询与操作进行统一的封装和错误处理,将结果返回控制器层。
日志记录: 日志将通过logger中间件进行统一的记录,包括访问日志与错误日志等。 日志使用插件进行记录并遵循 日志保存包括本地文件与控制台输出,本地文件将记录在./los下目录同时根据日志等级记录在对应文件内, 同时日志将会被打印输出到stdout以便运维同事统一记录日志。
错误处理: 错误处理将包含BFF错误、网络错误、MySQL数据库错误等,所有错误将通过统一包装并返回如下格式, 对于errorCode将遵守规范,对错误码进行规范。
描述: 数据库延续目前JAVA后台使用MySQL数据库,并依旧分为开发、测试、生产三个独立数据库。 生产环境数据库将定期将生产的数据同步到测试环境,以减免不必要的额外操作。 数据库使用进行连接,依据不同环境采用不同配置
ER图:
SSO登陆插件 SSO登陆流程图: SSO登陆流程描述: 1.客户端发送API请求,SSO插件进行白名单校验,白名单路由直接校验通过 2.非白名单路由进入Token校验,对Token
进行 jwt
解析,校验其合法性以及是否过期, 校验失败则正式进入SSO登陆流程 3.登陆流程开始浏览器重定向到 {sphinx}/sphinx/oauth/authorize?${params}, sphinx检测用户未登陆跳转企微扫码页面 4.扫码成功返回code, 跳转重定向页面。BFF接收code,开始向sphinx发送Token请求 5.成功获取Access_Token通过token开始向normandy请求用户数据 6.用户数据请求成功,将Token与用户信息写入cookie,跳转至首页,登陆成功 SSO插件配置示例: