HesapController.cs içine yeni Şifre belirlemek için gerekli actionları ekliyoruz
public IActionResult SifreSifirla()
{
return View();
}
Models klasörü içine SifreSifirla.cs modelini oluşturarak şifre sıfırlamak için gerekli olan bilgileri model içine tanımlıyoruz
Models\SifreSifirla.cs
using System.ComponentModel.DataAnnotations;
public class SifreSifirla
{
[Required(ErrorMessage ="Email boş bırakılamaz")]
public string Email { get; set; }
[Required(ErrorMessage ="Token boş bırakılamaz")]
public string Token { get; set; }
[Display(Name ="Şifre")]
[DataType(DataType.Password)]
[Required(ErrorMessage ="Şifre boş bırakılamaz")]
public string Sifre { get; set; }
[Compare("Sifre")]
[Display(Name ="Şifre tekrarı")]
[DataType(DataType.Password)]
[Required(ErrorMessage ="Şifre tekrarı boş bırakılamaz")]
public string SifreTekrari { get; set; }
}

Views\Hesap\SifreSifirla.cshtml içine yukarıdaki formu oluşturacak kodları yazıyoruz
@model SifreSifirla
@{
ViewData["Title"] = "SifreSifirla";
string e=Context.Request.Query["Email"];
string t=Context.Request.Query["Token"];
}
<form method="post">
<div class="text-danger" asp-validation-summary="All"></div>
<input type="hidden" name="Email" value="@e" />
<input type="hidden" name="Token" value="@t"/>
<h1 class=" text-center">Şifre sıfırla</h1>
<div class="row mt-3">
<div class="col-3">
<label asp-for="Sifre" class="label-control"></label>
</div>
<div class="col-9">
<input asp-for="Sifre" class="form-control">
<span asp-validation-for="Sifre" class="text-danger"></span>
</div>
</div>
<div class="row mt-3">
<div class="col-3">
<label asp-for="SifreTekrari" class="label-control"></label>
</div>
<div class="col-9">
<input asp-for="SifreTekrari" class="form-control">
<span asp-validation-for="SifreTekrari" class="text-danger"></span>
</div>
</div>
<div class="row mt-3">
<div class="col-9 offset-3">
<button type="reset" class="btn btn-danger">Gönder</button>
<button type="submit" class="btn btn-success">Gönder</button>
</div>
</div>
</form>
@section Scripts{
<partial name="_ValidationScriptsPartial" />
}
HesapController.cs içine yeni yukarıdaki formdan gelen bilgileri işleyerek yeni şifre belirleyen kodları yazıyoruz.
Aşağıda kullanılan email gönderim metoduna erişmek için buraya ziyaret edebilirsiniz
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SifreSifirla(SifreSifirla m)
{
if (!ModelState.IsValid)
return View(m);
var kullanici = await userManager.FindByEmailAsync(m.Email);
if (kullanici == null)
RedirectToAction(nameof(SifremiUnuttum));
var sifirla = await userManager.ResetPasswordAsync(kullanici, m.Token, m.Sifre);
if (!sifirla.Succeeded)
{
foreach (var error in sifirla.Errors)
{
ModelState.TryAddModelError(error.Code, error.Description);
}
return View();
}
return View("Views/Shared/_basarili.cshtml", "Şifreniz başarıyla değiştirildi");
}

“18 şifre sıfırlama” üzerine bir yorum