如何跨单个项目的不同 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_idzuul-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 审计?的主要内容,如果未能解决你的问题,请参考以下文章

如何使我的Spring Boot微服务使用HTTPS运行?

小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列初体验

如何跨多个 Spring Boot 应用程序共享 H2 内存数据库?

Spring Boot 最简单的解决跨域问题

Spring Boot 最简单的解决跨域问题

spring boot跨域设置