添加自定义令牌提供者

问题描述

我定义了一个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方法返回多个值,因为我需要QrCodeSetupImageUrluniqueUserKey。但是,方法签名仅返回Task<string>,因此我无法发送回自定义模型

我需要使用IUserTwoFactorTokenProvider,因为我希望Identity能够为给定的提供程序生成正确的令牌。有什么办法可以解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)