1
转换我的MVC应用程序以利用AspNet Identity。我创建了一个扩展SignInManager的ApoplicationSignInManager类如何向自定义SignInManager中的ApplicationUser添加声明
我重写了CreateIdentityAsyc,并且我想在这里添加自定义声明而不保留到db,以便这些值可用于登录用户。
public class ApplicationSignInManager : SignInManager<ApplicationUser, string>
{
private readonly IUserService userService;
public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager, IUserService userService)
: base(userManager, authenticationManager)
{
this.userService = userService;
}
public override Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user)
{
var myUser = userService.GetUser(user.Id);
var userIdentity = user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager);
userIdentity.Result.AddClaim(new Claim("MyCustomID", myUser.CutomID.ToString()));
return userIdentity;
}
}
我的问题是,执行AddClaims行时,应用程序挂起。我猜这与异步任务的死锁有关,但我无法弄清楚如何解决这个问题。
请给我一些指导。
如果它挂起,那么它一定是一个线程问题。请等待user.GenerateUserIdentityAsync –
您应该等待'GenerateUserIdentityAsync()'的调用。 –