如何跨单个项目的不同 Spring Boot 微服务实现 JPA 审计?
Posted
技术标签:
【中文标题】如何跨单个项目的不同 Spring Boot 微服务实现 JPA 审计?【英文标题】:How to implement JPA Audit across different Spring Boot Microservices of a single project? 【发布时间】:2020-01-09 00:58:26 【问题描述】:我有一个AUTH_SERVICE
,它验证用户凭据并在响应标头中发送 JWT 令牌。我还有GATEWAY_SERVICE
,它拦截请求并验证令牌并将请求转发给其他微服务的控制器。
现在,在这个过程中,我似乎无法弄清楚如何实现JPA Auditing
,以防万一目标微服务的任何表数据发生变化。
有什么建议吗?
这是Github link to my project
下面是项目中的微服务列表
- zuul-server (Port:8762)
- auth-server (Port: 9100)
- gallery-service (Port: 8100)
- image-service (Port: 8200)
✖ - 现在,我需要将 username/token
或说 user_id
从 zuul-server
发送到 gallery-service
以进行 JPA 审计。有什么建议我该怎么做?
【问题讨论】:
您可以将Authorization
标头传递给画廊服务,或者您可以添加某种标头,仅将用户名发送到您的画廊服务by using a route filter 和use header-based pre-authentication gallery-service 获取当前用户。
@g00glen00b 你能指导我通过一个例子(任何特定类型的)
【参考方案1】:
根据 spring 文档,您可以借助 zuul 配置将标头从 zuul 发送到其他服务。
Spring 文档:
sensitiveHeaders 为黑名单,默认不为空。因此,要让 Zuul 发送所有头文件(除了被忽略的头文件),您必须将其显式设置为空列表。如果您想将 cookie 或授权标头传递到后端,则必须这样做。
示例:
zuul:
routes:
users:
path: /myusers/**
sensitiveHeaders:
【讨论】:
好吧,尽管在我的 api-gateway 配置文件中添加了sensitive-header
作为zuul.routes.auth-service.sensitive-headers=Cookie, Set-Cookie
,但当我将请求从zuul service i.e. my api-gateway
转发到@987654325 时,标题仍然为空@。我错过了什么吗? @gnana-jeyam95以上是关于如何跨单个项目的不同 Spring Boot 微服务实现 JPA 审计?的主要内容,如果未能解决你的问题,请参考以下文章
小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列初体验