简单介绍下你做的项目。
这个神领物流项目是一个前后端分离的项目,前段他有3个客户端(用户端为微信小程序、司机端和快递员端为app)一个管理端(pc),后端用的技术栈用的是SpringAlibabaCloud、数据库用的是MySQL、缓存型数据库用的是redis和MongoDB、数据库框架用的是mybatis-plus、我在这个项目中主要负责
- 父工程、通用工程、统一消息代码、网关、基础微服务
- (快递员web服务系统)、运费微服务、快递员微服务、订单微服务、轨迹微服务、
- 调度微服务、支付微服务、路线微服务、物流信息微服务、运单微服务
- (司机web服务系统)、司机微服务、服务范围微服务、短信微服务、
- (后台web服务系统、用户web服务系统)、搜索微服务 用户微服务、
微服务项目团队如何协作?你们多少个小组开发?
团队如何协作:技术部门进行分工协作,不同的小组负责对应微服务的开发;
多少个开发小组:有5个小组协同进行开发,技术部人数为每个开发小组4-5人(前段开发、后端开发)有专门的测试人员进行测试,
项目中是如何进行持续集成的?提交git后如何自动进行构建?
持续集成:使用Jenkins进行持续集成
构建:使用Jenkins进行项目的构建(运维人员安装对应的测试、生成环境和对应的项目构建部署工具)
说说统一网关中是如何进行认证与鉴权工作的?在网关中如何自定义过滤器?
用户通过指定的url路径
登录web系统:
1.NGINX将请求反向代理给Gateway服务
2.Gateway服务在yml文件的路由中配置拦截的路径 和 过滤器:
3.
- 判断请求url在不在
非鉴权白名单中
不在则进行鉴权逻辑操作、 - 从header中拿到
token
并校验、校验成功从中拿出用户级别信息类AuthUserInfoDTO
、 - 在解析
AuthUserInfoDTO
中的信息拿到该用户对应的角色id
、 - 鉴权(使用
AuthUserInfoDTO
中的信息拿到该用户对应的角色id
和配置文件中的角色id进行判断)判断成功返回true鉴权成功则登录
,返回false鉴权失败则报错提示
网关中如何定义过滤器:
1.在路由配置文件bootstrap.yml的服务路由配置中,配置自定义的服务路由过滤器:
2.自定义的服务路由过滤器继承抽象网关过滤器工厂类AbstractGatewayFilterFactory<Object>
和实现自定义的鉴权过滤器接口AuthFilter
,实现三个方法(传入应用参数方法、校验token方法、鉴权方法)
3.抽象网关过滤器工厂类AbstractGatewayFilterFactory<Object>
的主要逻辑在通用过滤器TokenGatewayFilter
中进行逻辑执行
项目中的用户权限是如何管理的?如何与权限管家对接?
用户权限使用的第三方权限服务:使用的是传智播客的开源项目(权限管家),我们在权限管家里面创建角色和给用户选择对应的角色。
Gateway网关服务与权限管家对接:引入权限管家依赖、yml文件配置权限管家服务