面试2024.1.20

时间:2024-01-22 19:31:21

简单介绍下你做的项目。

这个神领物流项目是一个前后端分离的项目,前段他有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文件配置权限管家服务