L__moumoutu 2023-07-19 16:09 采纳率: 0%
浏览 13

怎么在其他服务中拿到SpringContextHolder

做了一个基于nacos,seata的微服务项目,现在想把服务拆分开来,遇到了一个问题,鉴权框架使用的SpringSecurity,我想在gateway中的过滤器直接处理鉴权的问题,但是gateway框架没有SpringContextHolder,我无法把认证信息塞进去,就算塞进去了,其他微服务没有用SpringSecurity框架也拿不到认证信息

  • 写回答

2条回答 默认 最新

  • kevin180123 2023-07-19 16:36
    关注

    使用全局过滤器:Gateway框架可以使用全局过滤器来处理请求,这样可以在请求经过Gateway之前进行一些自定义的处理,包括鉴权。你可以创建一个实现了GlobalFilter接口的全局过滤器,并加上@Component注解使其成为Spring管理的Bean。在过滤器中,你可以通过调用ServerWebExchange对象的方法来获取请求头或请求参数中的认证信息,并进行相应的鉴权处理; 使用自定义注解:另一种方式是使用自定义注解。你可以创建一个自定义注解,例如@AuthorizationRequired,用于标识需要进行鉴权的接口或方法。然后,编写一个Aspect切面,在切面中获取请求中的认证信息,并进行鉴权处理。Aspect切面可以通过@Around注解来拦截被@AuthorizationRequired注解标识的方法,然后在切面中进行相应的鉴权逻辑,如检查token、验证权限等。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月19日

悬赏问题

  • ¥50 VS2019,xamarin框架串口调试报错Java.Lang.SecurityException: Exception of type
  • ¥20 QT如何判断QLineF线鼠标划过事件
  • ¥15 关于#phpstorm#的问题:phpstorm编辑工具 光标选中了就会自动复制到粘贴板上 这样我之前复制的内容就失效了
  • ¥15 pychram安装jupyter插件
  • ¥60 悬赏破解越狱iphone4s中360保险箱密码遗忘
  • ¥20 ARKts悬浮窗和快捷方式问题
  • ¥15 linux中nginx服务器提示not found on accelerator,如何解决?(语言-php|操作系统-linux)
  • ¥15 comparecluster没有办法kegg
  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例