UserManager.FindAsync使用自定义Userstore的FindByIdAsync方法而不是FindByNameAsync

时间:2016-04-18 09:56:51

标签: asp.net-identity usermanager

我正在使用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?

提前致谢。

1 个答案:

答案 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;
     }   
}