Bir çok web sitesinin klasik bölümüdür şifremi unuttum bölümü. Kullanıcı adınızı veya email adresinizi girersiniz ve mail adresinize postalanır yeni şifreniz. Peki bu senaryo ASP.NET MVC ile Membership yapısı kullanılarak nasıl yapılır? Yani kullanıcı şifresi resetlenir (reset password) ve yeni şifre mail olarak gönderilir.
Bu işlem için önce sistemimizin konfigurasyonunu mail gönderebilecek şekilde hazırlamamız gerekmektedir.
<system.net> <mailSettings> <smtp deliveryMethod="Network"> <network host="mailhostadresiniz" (örneğin smtp.gmail.com) port="587" userName="emailadresiniz" password="sifreniz" enableSsl="true"/> (SSL gerektiren mail sunucu kullanıyorsanız) </smtp> </mailSettings> </system.net>
Sistemimiz mail gönderemeye hazır bir vaziyete gelmiş durumda.
ASP.NET MVC projemizde Models dizinindeki Account model içerisine yeni bir model tanımlamalıyız. Bu modelin adı LostPasswordModel olacak.
public class LostPasswordModel { [Required(ErrorMessage = "Kullanıcı adınızı giriniz.")] [Display(Name="Kullanıcı Adı")] public string Username { get; set; } }
Bu model ile kullanıcıdan kullanıcı adını talep ederek mail adresine yeni şifresini göndereceğiz.
Bu modelden gelen kullanıcı adını alarak o kullanıcının şifresini sıfırlayıp, yeni mail adresine postalamalıyız. Bu işlemi yapmak için aşağıdaki metodu tanımlayabiliriz.
public void ResetPassword(string username) { MembershipUser user = Membership.GetUser(username); string confirmationGuid = user.ProviderUserKey.ToString(); string newPassword = user.ResetPassword(); string bodyMessage = string.Format("Yeni Şifreniz {0}",newPassword); var message = new System.Net.Mail.MailMessage("kimden@mail.com", user.Email) { Subject = "Yeni şifre oluşturma isteği.", Body = bodyMessage }; var client = new System.Net.Mail.SmtpClient(); client.Send(message); }
Bu metod sayesinde kullanıcının mail adresine yeni şifresini postalamış olduk.