2014-11-14 90 views
0

所以我想我的自定义哈希加入到我的密码,但它卡住了,因为我自己的验证与哈希ASP.NET MVC密码验证

我的模型:

public class ms_user 
{ 
    [Required(ErrorMessage = "Please Input your Login Email")] 
    [DataType(DataType.EmailAddress)] 
    public object user_id { get; set; } 

    [Required(ErrorMessage = "Please Input your Password")] 
    // Validation at least 1 uppercase & 1 number, password lenght must be greater then 6 and lower then 12, with no Special Character 
    [RegularExpression(@"^(?=.*\d)(?=.*[A-Z])[a-zA-Z0-9](.{6,12})$", ErrorMessage = "Error, Wrong Password Format")] 
    public object password { get; set; } 
} 

样品:

密码Inputed:为admin123 //通过验证

HashedPassword OUTP UT:l92Vi3c2Af7Oftgy7JqYJKR8isYXef8pIOqvMzjrN6rnRct6W6UuDzv0YRCOudPPXnC69Gj2J4igXZWH1WRz9C19abN4UWKSqX8d0TxA + 0IvXJAvzoksaEWPQm56gy/L:9KZQeh3nB9apjy81V/FvfU //之后我散列我的密码,

我的项目通过了密码验证,但在db.SaveChanges();它返回错误,因为密码验证

是否有任何解决方案?我宁愿不添加JavaScript验证...

THX在user表,以适应哈希密码

+0

它抛出的错误是什么?用户表中密码列允许的最大长度是多少?查看哈希密码的长度,可能是“验证一个或多个实体失败”。 – adiga

+0

验证错误,因为HashedPassword长度超过12个字符 – user3848402

回答

0

更改密码列的数据类型为nvarchar到(MAX)。

+0

我已经这样做了,但密码的密码长度验证仍然存在,因为HashedPassword输出将位于数据库的密码字段中......所以基本上我的问题是,当我输入密码的形式“Admin123”,他们将通过验证,但在我的系统哈希密码后,长度将改变,并在db.SaveChanges()他们将返回错误称密码格式错误... – user3848402

+0

你有2个单独的用户视图模型和数据模型的权利?您将正则表达式验证添加到您的用户'视图模型'中。提交后,您需要验证控制器内部的验证。 然后将数据传递给您的数据模型(实体),然后使用函数对其进行哈希处理并调用保存更改。 – adiga

0

我面对这个完全相同的问题,因为我更新了数据库中的密码长度为nvarchar(max),但之后没有更新Visual Studio中的模型。所以更新型号它应该解决这个问题。

+0

为什么这不能回答这个问题? – Ahmed