C# 正在尝试重写ClaimSideEntityFactory上的CreateSync函数
几天前,我找到了一本Ben Foster的关于MVC、Identity和OWIN的非常好的教程。教程是 我刚刚完成了教程,在尝试重写函数“CreateAsync”时发现了一个问题。VisualStudio不允许这样做 代码如下:C# 正在尝试重写ClaimSideEntityFactory上的CreateSync函数,c#,asp.net-mvc,identity,owin,claims,C#,Asp.net Mvc,Identity,Owin,Claims,几天前,我找到了一本Ben Foster的关于MVC、Identity和OWIN的非常好的教程。教程是 我刚刚完成了教程,在尝试重写函数“CreateAsync”时发现了一个问题。VisualStudio不允许这样做 代码如下: public class AppUserClaimsIdentityFactory : ClaimsIdentityFactory<AppUser> { public override async Task<ClaimsIdentity>
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;
}
}
公共类AppUserClaimsIdentityFactory:ClaimsIdentityFactory
{
公共重写异步任务CreateAsync(
用户管理器,
应用程序用户,
字符串身份验证类型)
{
var identity=await base.CreateAsync(管理器、用户、authenticationType);
identity.AddClaim(新声明(ClaimTypes.Country,user.Country));
返回身份;
}
}
有人知道我如何解决这个问题吗
解决方案
感谢@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;
}
}
公共类AppUserClaimsIdentityFactory:ClaimsIdentityFactory
{
公共异步覆盖任务CreateAsync(UserManager,
AppUser用户,字符串身份验证类型)
{
var identity=await base.CreateAsync(管理器、用户、authenticationType);
identity.AddClaim(新声明(ClaimTypes.Country,user.Country));
返回身份;
}
}
您可以尝试查看版本吗?git上的文件使用Microsoft.AspNet.Identity.Core.dll版本1,现在是vervion 2。尝试将ClaimSideEntityFactory嵌入其中我创建了一个与上述类似的索赔工厂AppUserClaimSideEntityFactory,但希望添加关于如何使用该工厂的说明。我在AppUserManager构造函数中添加了以下行,它可以根据需要工作:
public class AppUserManager : UserManager<AppUser, string>
{
public AppUserManager(IUserStore<AppUser> userStore) : base(userStore)
{
ClaimsIdentityFactory = new AppUserClaimsIdentityFactory();
...
公共类AppUserManager:UserManager
{
公共AppUserManager(IUserStore userStore):基本(userStore)
{
ClaimSideEntityFactory=新的AppUserClaimSideEntityFactory();
...
您可以将代码作为文本附加。没有人想调试代码的图片。谢谢,我刚刚将代码作为文本附加。@matthewstore@ETorre,我会尝试的!