ASP.NET üyelik sistemlerinde bir gelenek olan üyelerin email adreslerini doğrulama işleminden bahsedelim birazda. Sistemimize üye olanları email adresleri aracılığıyla gerçek kullanıcı olup olmadıklarını anlayabiliriz bu sayede. Bu işlem için sistemin konfigurasyonlarının mail gönderebilecek hale getirilmesi gerek. Yani mail ayarları yapılmalıdır.
<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>
Bu ayarlar yapıldıktan sonra üyelerin kayıtlarının yapıldığı sırada bir doğrulama postasının otomatik olarak gönderilmesi gerekir. Bu işlemi yapan metodu hazırlamalıyız.
public void SendConfirmationEmail(string username) { MembershipUser user = Membership.GetUser(username); string confirmationGuid = user.ProviderUserKey.ToString(); string verifyUrl = System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Account/Verify?Id=" + confirmationGuid; string bodyMessage = string.Format("üyeliğiniz başarıyla oluşturulmuştur. Aşağıdaki linke tıkladığınızda hesabınızın aktif olacaktır.\n"); bodyMessage += verifyUrl; var message = new System.Net.Mail.MailMessage(Models.Configuration.SystemMail, user.Email) { Subject = "Üyeliğinizi doğrulayın.", Body = bodyMessage }; var client = new System.Net.Mail.SmtpClient(); client.Send(message); }
Mail gönderen metodumuz da artık hazır olduğuna göre bu metodu kayıt işlemi sırasında kullanabiliriz.
[HttpPost] public ActionResult Register(RegisterModel model) { if (ModelState.IsValid) { MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email, false); if (createStatus == MembershipCreateStatus.Success) { SendConfirmationEmail(model.UserName); return RedirectToAction("Confirmation","Account"); } else { ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); } } return View(model); }
Artık kayıt olan üyelere otomatik olarak mail gönderiliyor.
Bu linke tıklandığında, üye Account controller içindeki Verify action metoduna yönlendirilecektir.
public ActionResult Verify(string Id) { MembershipUser user = Membership.GetUser(new Guid(Id)); user.IsApproved = true; Membership.UpdateUser(user); return RedirectToAction("Welcome"); }
Bu action metod sayesinde linke tıklayan üyenin üyeliği aktif hale getirilmiş oldu.
projenin çalışan halini ekleyebilir misin?
İyi günler. ben mvcye yeni başladım üyelik kısmını yapmak istiyorum ama bu kodları nereye yazcam tam olarak bilmiyorum detaylı anlatabilir misiniz acaba? şimdiden teşekkürler
En üst kısımdaki (system.net)… kod blokunu web.config içerisine tanımlamanız gerekiyor. C# kod tarafını da login işlemlerinizi yaptığınız controller sınıfı içerisine uygulamalısınız. Genellikle bu işlem için AccountController kullanılır. Siz başka bir controller sınıfı kullanmıyorsanız AccountController içerisine tanımlayabilirsiniz.
verdiğiniz bilgi için teşekkürler ama kodların tam olarak ne işe yaradığını bilmediğim için bazı sıkıntılar yaşıyorum. MembershipService.CreateUser(model., model.Password, model.Email de ki MembershipServic’de Password de Emailde sıkıntılar yaşıyorum. bunlar benm kendi tanımladığım classlardan almam gereken bilgiler mi? ya da tam olarak nasıl anlamadım:) RegisterModel olarak tanımladığıız kısımı ben kendimde AdminBilgileri olarak tanımladığım kısımı yazdım dediğim gibi kodların tam olarak ne işe yaradığını bilmediğim için saçmalıyoda olabilirim 🙂 şimdiden teşekkürler iyi çalışmlar
Anlamadığınız kısmı bende şimdi anladım. Membership yapısı asp.net ile hazır gelen bir üyelik yönetim yapısıdır. Üye kaydı, düzenlenmesi, silinmesi işlemi için microsoftun sunduğu bir kolaylık diyelim. Bunun için öncelikle “asp.net membership” konusunu öğrenmenizde fayda var.
Ancak siz üyelik sistemini kendiniz yaptıysanız zaten sorun yok.
hmm anladım teşekkürler iyi çalışmalar 🙂