我试图更改密码。但是我输入了另一个不用于登录的密码。这样我可以更改密码。在mvc core中,如何检查旧密码和当前密码相同
答案 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; }
}