我正在使用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?
提前致谢。
答案 0 :(得分:1)
您可以在自定义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;
}
}