如何屏蔽日志中 Refit API 调用的 URL 查询参数中的值

问题描述 投票:0回答:1

这是我的要求:

public class GenerateTokenRequest
{
    [AliasAs("code")]
    public string Code { get; set; } = string.Empty;
    
    [AliasAs("secret")]
    public string Secret { get; set; } = string.Empty;
}

这是我的改装界面:

public interface IAuthServiceRefitApi 
{
    [Post("/token")]
    Task<GenerateTokenResponse> GenerateTokenAsync(
        [Query] GenerateTokenRequest command,
        CancellationToken cancellationToken = default);
}

这个方法被调用,然后它创建一个像这样的 URL :

https://some-url.com/oauth/token?code=SOME_CODE&secret=SOME_SECRET

我想在日志中用 *** 掩盖秘密值和代码。

对于属于主体一部分的属性,我使用了 PiiString 概念,然后添加了自定义委托处理程序。

但是对于作为查询参数成为 URL 一部分的属性,我无法做到这一点。

关于我应该如何实现这一目标有什么建议吗?

c# .net .net-core masking refit
1个回答
0
投票

您必须像这样直接在方法中传递变量:

public interface IAuthServiceRefitApi
{
    [Post("/token")]
    Task<GenerateTokenResponse> GenerateTokenAsync(string code, string secret, CancellationToken cancellationToken = default);
}

使用上面的代码,您的网址将是这样的:

https://some-url.com/oauth/token?code=SOME_CODE&secret=SOME_SECRET

注意:根据您现有的代码,您必须使用 https://some-url.com/oauth/token URL 传递 JSON 正文。

© www.soinside.com 2019 - 2024. All rights reserved.