加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-5 – 在MVC 5的IPasswordStore中,SetPasswordHashAs

发布时间:2020-12-16 04:27:38 所属栏目:asp.Net 来源:网络整理
导读:尝试在新的asp.net mvc 5中实现IPasswordStore,我有点不知所措.我想使用自己的ORM. 从示例项目中使用’register’屏幕时运行的脚手架’AccountController’中获取这个熟悉的代码片段. public async TaskActionResult Register(RegisterViewModel model) { if
尝试在新的asp.net mvc 5中实现IPasswordStore,我有点不知所措.我想使用自己的ORM.

从示例项目中使用’register’屏幕时运行的脚手架’AccountController’中获取这个熟悉的代码片段.

public async Task<ActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new ApplicationUser() { UserName = model.UserName };
            var result = await UserManager.CreateAsync(user,model.Password);
            if (result.Succeeded)
            {
                await SignInAsync(user,isPersistent: false);
                return RedirectToAction("Index","Home");
            }
            else
            {
                AddErrors(result);
            }
        }

        // If we got this far,something failed,redisplay form
        return View(model);
    }

var result = await UserManager.CreateAysnc(user,model.Password)

line首先调用IPasswordStore函数

public Task SetPasswordHashAsync(TUser user,string passwordHash)

没有先从IUserStore调用

public Task CreateAsync(TUser user)

如果尚未在db中创建用户,如何设置密码哈希?此外,我们实际上甚至不知道我们是否可以创建提议的“用户”,因为我们还没有检查是否已使用用户名

public Task<TUser> FindByNameAsync(string userNameIn)

这被称为之后.

有任何想法吗?

解决方法

您是正确的注意到在创建用户之前您可能不应该为用户保留密码哈希值.
您可以将密码哈希保存到一个位置,如果实际上没有实际创建用户,该位置将被还原.密码不应存储,直到创建和存储用户,即在CreateAsync(TUser用户)中.

EntityFramework实现中的IdentityUser就是这样一个位置,它使您能够在CreateAsync方法中存储用户和密码信息.我并不是说你应该引用Identity.EntityFramework程序集,只是说同时具有类似于IdentityUser的User和PasswordHash信息的User对象是一种可能的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读