我使用的是Identity Framework。当我登录到我的应用程序时,appUser检索UserManager,如下所示:
Patient patient = await UserManager.FindAsync(model.Id, model.Password);
正如我从调试中了解到的,UserManager.FindAsync使用UserStore中的FindByNameAsync(string userName)
(我有一个自定义的UserStore)。
问题是:如何告诉UserManager.FindAsync使用我的自定义UserStore的FindByIdAsync方法,而不是FindByNameAsync?
我是否还需要编写一个自定义UserManager?
提前谢谢。
您可以在自定义UserManager 中重写该方法
public class ApplicationUserManager : UserManager<AppUser, string>
{
public override async Task<AppUser> FindAsync(string id, string password)
{
var user = await FindByIdAsync(id).WithCurrentCulture();
if (user == null)
{
return null;
}
return await CheckPasswordAsync(user, password).WithCurrentCulture() ? user : null;
}
}