问题描述
我定义了一个类GoogleTokenProvider
,该类实现了IUserTwoFactorTokenProvider
接口,如下所示:
public class GoogleTokenProvider : IUserTwoFactorTokenProvider<IdentityUser>
{
public static readonly string ProviderName = "Google";
private readonly GoogleTfaSettings _googleTfaSettings;
public GoogleTokenProvider(GoogleTfaSettings googleTfaSettings)
{
_googleTfaSettings = googleTfaSettings;
}
public async Task<bool> CanGenerateTwoFactorTokenAsync(UserManager<IdentityUser> manager,IdentityUser user)
{
return _googleTfaSettings.Enabled;
}
public async Task<string> GenerateAsync(string purpose,UserManager<IdentityUser> manager,IdentityUser user)
{
var authenticator = new TwoFactorAuthenticator();
Guid guid = Guid.NewGuid();
string uniqueUserKey = Convert.ToString(guid).Replace("-","").Substring(0,10);
var setup = authenticator.GenerateSetupCode("Sneakers",user.UserName,uniqueUserKey,false,300);
return setup.QrCodeSetupImageUrl;
}
public async Task<bool> ValidateAsync(string purpose,string token,IdentityUser user)
{
var authenticator = new TwoFactorAuthenticator();
return authenticator.ValidateTwoFactorPIN("",token);
}
}
我的目标是从GenerateAsync
方法返回多个值,因为我需要QrCodeSetupImageUrl
和uniqueUserKey
。但是,方法签名仅返回Task<string>
,因此我无法发送回自定义模型。
我需要使用IUserTwoFactorTokenProvider
,因为我希望Identity能够为给定的提供程序生成正确的令牌。有什么办法可以解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)