在更改密码之前,用当前密码验证旧密码

时间:2019-12-03 11:01:11

标签: asp.net asp.net-core model-view-controller

我试图更改密码。但是我输入了另一个不用于登录的密码。这样我可以更改密码。在mvc core中,如何检查旧密码和当前密码相同

1 个答案:

答案 0 :(得分:0)

这是一个有关如何重置密码的简单演示:

1。型号:

public class Account
{
    public int Id { get; set; }
    public string Username { get; set; }
    [DataType(DataType.Password)]
    public string Password { get; set; }       
}
public class LoginViewModel
{
    public string UserName { get; set; }
    [DataType(DataType.Password)]
    public string Password { get; set; }
}

2。视图:

@model LoginViewModel
<form method="post" asp-action="Login">
    <div asp-validation-summary="ModelOnly"></div>

    <div>
        <label asp-for="UserName"></label>
        <input asp-for="UserName" />
        <span asp-validation-for="UserName"></span>
    </div>

    <div>
        <label asp-for="Password"></label>
        <input asp-for="Password" />
        <span asp-validation-for="Password"></span>
    </div>
    <input type="submit" value="submit" />
</form>

3.Controller:

public class HomeController : Controller
{
    private readonly WebApplication1Context _context;

    public HomeController(WebApplication1Context context)
    {
        _context = context;
    }

    [HttpGet]
    public async Task<IActionResult> Login()
    {
        return View();
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        _context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;
        var user =  _context.Accounts.Where(a => a.Username == model.UserName).FirstOrDefault();
        if (user != null)
        {
            if (user.Password == model.Password)
            {
                return RedirectToAction(nameof(Index));
            }
            var data = new Account()
            {
                Id = user.Id,
                Username = model.UserName,
                Password = model.Password
            };
            _context.Update(data);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Login));
        }

        return View();
    }        
}

4.DbContext:

public class WebApplication1Context : DbContext
{
    public WebApplication1Context (DbContextOptions<WebApplication1Context> options)
        : base(options)
    {
    }

    public DbSet<Account> Accounts { get; set; }
}
相关问题