我正在开发一个依靠多个微服务来提供分析的系统。我有一个使用OAuth2(资源所有者密码凭据)管理授权的微服务。我的目标是审核谁在嵌入式列中创建/更新了某个实体的人,如下所示:
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Embeddable
public class AuditEmbeddable implements Serializable {
@CreatedBy
@Builder.Default
@Column(name = "created_by", nullable = false, length = 64, updatable = false)
private String createdBy = "system";
@CreatedDate
@Builder.Default
@Column(name = "created_at", nullable = false)
private Instant createdAt = Instant.now();
@LastModifiedBy
@Column(name = "modified_by", length = 64)
private String modifiedBy;
@LastModifiedDate
@Column(name = "modified_at")
private Instant modifiedAt;
}
我确定令牌始终与请求一起发送,因为我们使用了对每个请求进行身份验证的大使网关。目前,我使用的是非常古怪和错误的方法(我认为)。我使用@RequestHeader("Authentication")
获取附加到请求的令牌,将请求发送到身份验证服务器以获取用户电子邮件(和角色),并作为参数传递给服务,服务依次设置created_by
或{{ 1}}列。有没有一种方法可以拦截并具有某种上下文,我可以自动从中获取用户信息(使用Spring的身份验证服务)?