添加自定义令牌提供者

问题描述

我定义了一个类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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...