我正在开发 MVC 5 Web应用程序使用 Entity Framework Database First 使用现有数据库。
我还使用 asp.net Identity 用于我的授权和身份验证,但是,我不使用内置的内置实体框架代码,即 usermanager Applicationuser 等,我正在使用与Brock Allen相似的方法。
http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middle-middleware-for-the-asp-net-developer/
我现在正在使用帐户登录和注册工作,我想在将用户密码哈希放在我的自定义用户表中。
。我意识到我可以创建自己的自定义类,该类实现 ipasswordhasher ,但是,这就是我被卡住的地方。下面显示了我认为它应该如何工作的模拟,但是,我不确定这是正确的。
public class CustomPassword : IPasswordHasher
{
public string HashPassword(string password)
{
return password;
}
public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
{
if (hashedPassword.Equals(providedPassword))
return PasswordVerificationResult.Success;
else return PasswordVerificationResult.Failed;
}
}
这些是我的问题:
Q1 :注册新用户帐户时,我传递了用户密码 从我的帐户控制器中的HashPassword方法中, 我希望用户密码哈希并作为字符串返回, 但是,我不知道将什么代码放入 HashPassword 中 这样做的功能。
CustomPassword pwd = new CustomPassword();
String UserPassword = "test@123";
String HashedNewPassword = pwd.HashPassword(UserPassword);
Q2 :当用户登录到网站时,我想获取其提供的密码,从数据库用户表中检索Hashed密码,然后在 verifyifyHashedPassword中比较它们方法,但同样,我不知道该代码是什么代码与非障碍字符串进行比较。
我将非常感谢有关如何执行此操作的任何建议。
谢谢。
创建USERMANAGER实例后,将passwordhasher属性分配给您的custompasswordhasher
UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);
UserManager.PasswordHasher = new CustomPasswordHasher(); // IPasswordHasher
使用UserManager查找用户名和密码的用户。