gpt4 book ai didi

c# - 身份验证 token 提供者 : Custom error message

转载 作者:行者123 更新时间:2023-11-30 18:47:54 25 4
gpt4 key购买 nike

我已经实现了自己的 OAuthAuthorizationServerProviderAuthenticationTokenProvider 并且一切正常,但是我想发送包含更多详细信息的错误消息。当我的刷新 token 出现问题时,我收到以下 JSON 对象:{"error":"invalid_grant"}我想要的是像{"error":"invalid_grant","re​​ason":"here_goes_my_custom_message"}

它可以在 OAuthAuthorizationServerProvider 中轻松完成(比如在 GrantResourceOwnerCredentials 方法中),因为参数中的上下文继承自 BaseValidatingContext 因此我可以使用:

if (user == null)
{
context.Rejected();
context.SetError("invalid_grant", "The user name or password is incorrect.");
return;
}

但是我不知道如何在我的 AuthenticationTokenProvider 中做类似的事情。我有以下方法:

public async Task ReceiveAsync(AuthenticationTokenReceiveContext context)
{
string hashedTokenId = Helper.GetHash(context.Token);
OAuthRefreshToken refreshToken = _oAuthRefreshTokenService.FindRefreshToken(hashedTokenId);

if (refreshToken != null)
{
//Get protectedTicket from refreshToken class
context.DeserializeTicket(refreshToken.ProtectedTicket);
var result = _oAuthRefreshTokenService.RemoveRefreshToken(hashedTokenId);
}
}

编辑: AuthenticationTokenReceiveContext 不是 BaseValidatingContext,因此没有 SetError拒绝方法。

当我的刷新 token 为 null 时,我想返回一条自定义错误消息。知道怎么做吗?

最佳答案

作为 OP 的答案可能会迟到,但我刚刚解决了这个问题,我会在这里写下答案,希望其他人能找到它:

可以拒绝刷新 token 的方法是 OAuthAuthorizationServerProvider 中的 GrantRefreshToken。此方法在 AuthenticationTokenProvider

创建授权上下文后调用
// this is caleld after AuthenticationTokenProvider.Receive

public override Task GrantRefreshToken(OAuthGrantRefreshTokenContext context)
{
base.GrantRefreshToken(context);
if (UserLocked(context.Ticket.Identity))
{
context.Rejected();
context.SetError("invalid_grant", "User is locked", "usr-lockout");
}
}

关于c# - 身份验证 token 提供者 : Custom error message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32327293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com