用户尝试使用旧密码时发出错误

时间:2016-10-12 17:47:44

标签: c# asp.net-mvc

我想在用户输入密码时使用此模型,它会检查输入的值是否等于与用户数据库中特定列对应的字段。

以下是我重置密码的视图模型:

 public class ResetPasswordViewModel
    {
        [Required]
        [EmailAddress]
        [Display(Name = "Email")]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 15)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }

        public string Code { get; set; }
    }

我想在StringLength下面添加它,但我想检查使用字符串equals或类似的东西。我是C#的新手。我的第一直觉是在控制器中执行此逻辑,但由于他们在此示例中检查了长度,因此我假设我可以在此处执行此操作。

这只是视觉工作室附带的库存示例,它为用户使用了身份类。

另外,我不确定哪种方法是最好的方法。我应该尝试检索未散列的密码并比较实际的字符串,还是应该散列新的(潜在的)密码然后比较散列字符串?

1 个答案:

答案 0 :(得分:0)

根据您的sample post suggest,有一个 PasswordHistory 表,它清楚地告诉您他正在使用数据库操作来比较用户在尝试时输入的值重置密码。 没有选项可以在模型中拥有价值。

在模型中拥有值的唯一可能选项是称为默认值。

  private const int MAXIMUM_AGE = 65;
  private int _age = MAXIMUM_AGE;
  [DefaultValue(MAXIMUM_AGE)]
  public int Age 
  {
    get { return _age; }
    set { _age = value; }
  }

这对你没有用。

SO FINAL WORDS:

您不能使用MODEL来获取应从数据库获取的值。

但是,如果您计划使用javascripts使用某些异步操作,请查看此Link

希望你很清楚。 !