我有一个如下所示的获取令牌方法(端点)。它装饰有
[AllowAnonymous]
注释 - 任何人都可以访问此方法。
[AllowAnonymous]
[HttpPost("get_token")]
public ActionResult<TokenResponseModel> Authenticate([FromBody] AuthenticateModel authenticateModel, [FromHeader] string jwtToken)
{
// some code
}
现在生成令牌后,我在身份验证过程中进行了第 2 步:为此,我使用从用户中选择的附加值调用相同的端点以生成新令牌,我将在标头中添加已生成的令牌.因此,我还需要将此方法创建为
AllowAnonymous
,如果我在标头中添加了令牌,则需要验证令牌,如下所示。
注意:我们的客户不想为这种情况创建新的端点。
如果您有任何想法,请告诉我。谢谢
所以你需要 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.
}
}
}