# 《API网关》第8章:网关会话鉴权处理

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

# 一、学习指引

什么时候编程技能突飞猛进?

熟练、熟练、熟练,当你开始对一个技术的广度边界、深度认知有了很多的积累,并能驾驭这些工具时,就是编程技能突飞猛进的时候。

而这些工具的熟练,往往要来自于项目的学习,通过有深度的需求的解决方案,来积累编程经验。积累的越多也就越能游刃有余的处理各类问题。但这个过程需要很长时间的积累,远不是朝夕就能完成的,也不只是几篇文章就能把你带起飞的。

就像网关的实现,当你完全跟进学习一遍以后,在遇到类似场景时,也可以给出同类的处理手段。并且越是小傅哥在网关开发中添加越多的东西,越能让你有更多的积累。不过你要注意,千万不要只是简单的敲敲代码就完事了,因为思考和设计是代码的落地的指导方案,先把这些重视起来。

# 二、会话鉴权过程

在第7章引入了 Shiro + JWT 作为鉴权的工具,这个工具就是要用到本章中用于处理网络会话请求中对接口访问信息的一个鉴权处理。

这里你可以思考🤔,一次网络请求经过 Netty 处理可以分为三段;消息接收、请求鉴权、消息处理。这样就由原来我们只是在接收消息后直接把消息协议转换后请求到 RPC 服务,转换为多添加二层来处理简单的消息接收和请求鉴权。这里的请求鉴权就是基于引入的 Shrio + JWT 完成。

为了满足消息的处理和鉴权,本章需要再引入2个Netty消息处理的Handler;AuthorizationHandler、ProtocolDataHandler

  • 【新增】AuthorizationHandler 做接口的鉴权
  • 【新增】ProtocolDataHandler 做协议数据的处理
  • 【修改】GatewayServerHandler 原有网络协议处理类,作为第一个Netty通信管道中的处理类,只做简单参数解析,保存到管道中后即可放行。—— 后续再有一些需要优先处理的逻辑也会放到这个 GatewayServerHandler 类里完成。