我有一种方法,可以通过检查其所有凭据或使用刷新令牌来获取令牌。
public TokenDto GenerateAuthToken(TokenRequestDto dto)
{
switch (dto.GrantType)
{
case "password":
return GetToken(dto.ClientId, dto.Email, dto.Password);
case "refresh_token":
return GetRefreshToken(dto.RefreshToken);
default:
return null;
}
}
GetToken是异步的,因为我正在使用asp.net身份,并且内置方法是异步的。 GetRefreshToken没有异步。
我应该将GetRefreshToken标记为异步还是有更好的方法?
答案 0 :(得分:1)
如果GetRefreshToken
是同步方法,那么我不会通过将其标记为Task<T>
来说谎。相反,我希望呼叫者使用已完成的任务
public Task<TokenDto> GenerateAuthToken(TokenRequestDto dto)
{
switch (dto.GrantType)
{
case "password":
// asynchronous, return the task
return GetToken(dto.ClientId, dto.Email, dto.Password);
case "refresh_token":
// synchronous, use a completed task
return Task.FromResult(GetRefreshToken(dto.RefreshToken));
default:
// don't return null, throw instead
throw new ArgumentOutOfRangeException(nameof(dto.GrantType));
}
}