如何在 .NET Core 中使用 AllowAnonymous 端点验证 jwt 令牌

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

我有一个如下所示的获取令牌方法(端点)。它装饰有

[AllowAnonymous]
注释 - 任何人都可以访问此方法。

[AllowAnonymous]
[HttpPost("get_token")]
public ActionResult<TokenResponseModel> Authenticate([FromBody] AuthenticateModel authenticateModel, [FromHeader] string jwtToken)
{
    // some code
}

现在生成令牌后,我在身份验证过程中进行了第 2 步:为此,我使用从用户中选择的附加值调用相同的端点以生成新令牌,我将在标头中添加已生成的令牌.因此,我还需要将此方法创建为

AllowAnonymous
,如果我在标头中添加了令牌,则需要验证令牌,如下所示。

注意:我们的客户不想为这种情况创建新的端点。

如果您有任何想法,请告诉我。谢谢

c# asp.net-core .net-core jwt
1个回答
0
投票

所以你需要 api 能够接受有或没有 jwtToken 的值,你可以在 jwtToken 参数前面添加一个

?
以使其为 Nullable。并在 jwtToken 不为空时调用其他一些内部 api(需要授权),再次将令牌添加到标头。

[AllowAnonymous]
[HttpPost("get_token")]
public ActionResult<TokenResponseModel> Authenticate([FromBody] AuthenticateModel authenticateModel, [FromHeader] string? jwtToken)
{
    if (jwtToken == null) { return token}
    else {
        var request = new HttpRequestMessage(HttpMethod.Get,"https://localhost:7171/otherInternalAPI"); //change to your [Authorize] API
        request.Headers.Add("Authorization", "bearer {your token}");
        var response = await client.SendAsync(request);
        if (response.IsSuccessStatusCode)
        {
            //do something when it can pass jwt authorize.
        }

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