尝试覆盖ClaimsIdentityFactory上的CreateAsync函数

时间:2014-10-08 14:00:13

标签: c# asp.net-mvc identity owin claims

几天前,我找到了Ben Foster关于MVC,Identity和OWIN的非常好的教程。教程为here

我刚刚完成了教程,我发现在尝试覆盖功能' CreateAsync'时遇到了问题。 Visual Studio不允许这样做。

这是代码:

public class AppUserClaimsIdentityFactory : ClaimsIdentityFactory<AppUser>
{
    public override async Task<ClaimsIdentity> CreateAsync(
        UserManager<AppUser> manager, 
        AppUser user, 
        string authenticationType)
    {
        var identity = await base.CreateAsync(manager, user, authenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Country, user.Country));

        return identity;
    }
}

有谁知道如何解决这个问题?

解决方案

感谢@ETorre,这是最终的代码!

public class AppUserClaimsIdentityFactory : ClaimsIdentityFactory<AppUser, string>
{
    public async override Task<ClaimsIdentity> CreateAsync(UserManager<AppUser, string> manager, 
            AppUser user, string authenticationType)
    {
        var identity = await base.CreateAsync(manager, user, authenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Country, user.Country));

        return identity;
    }
}

2 个答案:

答案 0 :(得分:3)

您可以尝试查看该版本吗? git上的文件使用Microsoft.AspNet.Identity.Core.dll版本1,现在它是vervion 2.尝试内部的ClaimsIdentityFactory

答案 1 :(得分:0)

我创建了一个与上述类似的索赔工厂AppUserClaimsIdentityFactory,但想添加有关如何使用工厂的说明。我将以下行添加到AppUserManager构造函数中,并根据需要进行了工作:

public class RockSongs:MongoBaseModel
{
    [BsonElement("Name")]
    public string Name { get; set; }

    [BsonElement("Singer")]
    public string Singer { get; set; }
}