记录前后端分离的系统应用下应用场景————用户信息传递
照例先看看系统的一张经典架构图,这张图参考自网络:
在 Dubbo 自定义异常,你是怎么处理的? 中已经对该架构做了简单说明,这里不再描述。
简单描述下在该架构中:
现在绝大多数的项目都是前后端分离的开发模式,采用方式进行用户鉴权:
- 客户端(pc,移动端,平板等)首次登录,服务端签发,在中放入等返回给客户端
- 客户端访问服务端接口,需要在头部携带,跟表单一并提交到服务端
- 服务端在层统一解析鉴权,同时取出并继续向底层传递,传到服务层操作业务逻辑
- 服务端在层取到后,执行相应的业务逻辑操作
问题:
为什么一定要把藏在中,服务端再解析取出?直接登录后向客户端返回不是更方便么?
跟用户强相关的信息是相当敏感的,一般不会直接明文暴露给客户端,会带来风险。
什么是单体应用? 简要描述就是层,层全部在一个进程中,更通俗的讲就是只有。
登录签发 token
看看下面的登录接口伪代码:
层接口:
层接口伪代码:
注意到上述伪代码中,签发时把放入客户标识中,签发到中返回给客户端。这里使用的是生成的
引入依赖:
相关工具类:
相关实体:
层统一鉴权,解析
客户端访问服务端接口,需要在头部携带,跟表单一并提交到服务端,服务端则在层新增拦截器统一做处理
新增拦截器如下:
整个解析过程已经在代码注释中说明,可以看到解析完后取出,将用户信息放入了中,关于的用法,本文暂不讨论.
添加配置使拦截器生效:
相关工具代码:
那么在层和都可以这样拿到:
层获取:
分布式应用与单体应用最大的区别就是从单个应用拆分成多个应用,层与层分为两个独立的应用,使用调用方式处理业务逻辑。而上述做法中我们将用户信息放入了中,是相对单应用进程而言的,假如层接口在另外一个服务进程中,那么将获取不到。
有什么办法能解决跨进程传递用户信息呢?翻看了下官方文档,有功能:
文档很清晰,只需要在层统一的拦截器中调用如下代码,就能将用户传到层
相应地调整层拦截器代码:
那么服务层可以这样获取用户了:
为了便于统一管理,我们可以在层拦截器中将获取到的再放入中,层拦截器可以看看这篇推文:Dubbo自定义日志拦截器
这样处理,层依然可以通过如下代码获取用户信息了:
关于:
关于:
到此这篇webflux使用教程(webflux webclient)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/77476.html