首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserManager FindAsync方法调用

UserManager FindAsync方法调用
EN

Stack Overflow用户
提问于 2014-03-27 22:05:38
回答 1查看 3.9K关注 0票数 6

新的ASP.NET MVC5项目模板生成一个准备好的AccountController,包括UserManager和底层Store (IUserStoreIRoleStore等)的基本实现。

本教程介绍如何实现用于在自定义数据源http://www.asp.net/identity/overview/extensibility/implementing-a-custom-mysql-aspnet-identity-storage-provider中存储用户数据的自定义UserStore

但是,我实现了自己的UserStore,并认识到了以下几点:

在登录过程中,会调用AccountController中的UserManager.FindAsync(UserName, Password)-method:

代码语言:javascript
复制
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        **var user = await UserManager.FindAsync(model.UserName, model.Password);**
        //other code
    }
    return View(model);
}

FindAsync-method按以下顺序调用底层UserStore-methods:FindByNameAsync -> GetPasswordHashAsync -> FindByIdAsync

我的问题是:为什么同时调用FindByNameAsync-和FindByIdAsync-methods?这会导致对数据库的2次查询,这会影响性能。

EN

回答 1

Stack Overflow用户

发布于 2014-10-19 05:14:38

当您的UserStore使用FindByNameAsync()获取您的用户时,它只是查找并验证用户的存在。

在获取用户信息时,您不会将密码返回给应用程序,因此这就是GetPasswordHashAsync()方法再次调用数据库来获取用户密码散列的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22690052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档