| Editor Login | Register | ||
| > Akademik İnternet ® > ASP.NET |
|
|
| Rol tabanlı güvenlik içeren sistemlerde rol bazlı toplu mail gönderimi | ||||||||
Web uygulamaları doğası gereği internet üzerinde çalıştığı için tüm internet kullanıcılarına açıktır. Fakat bu açıklık bir sitenin tüm bölümlerine girmenizi sağlamaz. Yetki durumunuza göre sitedeki içeriği görebilir ve yine site üzerinde bazı haklara sahip olabilirsiniz. Şöyle mantığı bir örnekleyelim.Bir makale sitesi düşünelim,bu sistemde bazı roller vardır.Üyeler,yazarlar,editörler,yöneticiler… .Üyelerin sadece giriş yapıp makale okuma yetkisi varken,yazarlar hem makale okuyabilirler hem de yazma yetkileri vardır.Editörler ise üyelerden yeni yazarlar tayin edebilir,mevcut yazarların görevini sona erdirebilir,makale yazabilir.Yönetici ise en yetkili kişidir.Aşağıdan yukarıya doğru büyüyen,yetkilerin genişlediği bir düzen var.Bir yukarıdaki kişi bir aşağıdakinin yapabildikleri dahil yeni görevler üstlenir.Ama her rol grubunun erişebileceği veya erişemeyeceği kaynaklar vardır.Bu yetkilendirme ve güvenlik düzeni Asp.Net ile çeşitli şekillerde sağlanır.Benim anlatacağım uygulama ve işlemler Forms Authentication mantığı üzerine oturtulacaktır.Bu rol tabanlı güvenlik sistemi ile ilgili daha fazla bilgi için ise buradan ulaşabilirsiniz.Ben işlemleri bu makaledeki mantık üzerine oturtacağım ve bir makale sitesinde üye grupları için toplu mail gönderimi işlemini yaptıracağım.Bu makalede üye kontrolleri,üyelik işlemleri vb. authentication mantığı anlatmayacağım.Sadece bu mantığa uygun bir üye tablosu oluşturup,yönetim menüsünde olacak bir işlemi gerçekleştireceğim. 1. Uygulamaya GeçelimRollerimiz belli;Üyeler,Yazarlar,Editörler,Yöneticiler Gelelim şimdi yapacağımız işleme.Bu sistemin yöneticisi rol gruplarına bilgilendirme işlemi için toplu olarak ulaşmak isteyecek.Biz bu işi gerçekleştirecek işlemleri gerçekleştirmeye başlayalım. Önce bir üye tablomuza göz atalım.
Tablomuz hazır,burada basit bir üyelik tablosu hazırladım.Kullanıcı adı,şifre vb. alanlar nvarchar tipinde.İsteyenler farklı şekilde hazırlayabilirler bu tabloyu,ekstra alanlar ekleyebilir,şifreyi MD5 vb. benzeri metodlar ile değiştirip daha saklayıp daha güvenli hale getirebilirler.Bizim uygulama için şimdi bu kadarı yeterli Şimdi mail göndereceğimiz formun tasarımını yapalım.
Formu incelediğimiz zaman alıcı seçeneği için bir checkboxlist,başlık,mesaj için iki tane textbox,bilgilendirme amaçlı bir label ile gönder butonu görüyoruz. Tasarım Kodları;
Form’un Page Load olayı(event) esnasında Checkboxlist dolduruluyor. Bu uygulamada kullanacağımız özel sınıflarımız var örneğin bu Checkboxlist’i doldururken kullandığımız ve her veritabanı işlemi gerçekleştirirken kullanacağımız ilk özel sınıfımız olan clsData sınıfını(class) tanıyalım.Bu sınıf bizim veritabanı işlemlerimizi gerçekleştiriyor.Basit bir Data Access Layer örneği.İçinde veritabanı bağlantı yolu tanımlanıyor ve işlemlerimizi gerçekleştiren fonksiyon var.Fill fonksiyonu,verdiğimiz sorgu veya saklı yordama(store procedure) göre bir dataset’i dolduruyor. clsData
Burada aldığı “yazgelistir” adlı ConnectionString ise webconfig’de tanımlı.
Şimdi Checkboxlist nasıl dolduruluyor onu görelim.
Mail gönderme formunu hazırlama işlemi bittiğine göre artık gönder butonu altında gerçekleşecek işlemleri yapmaya başlayabiliriz.Bizim için neler gerekli önce onları bir yapılacaklar listemize çıkaralım. J Önce bizim checkboxlist’e seçilen rol tipinde olan tüm kullanıcıların mail adreslerini almamız gerekiyor. Bu liste tamamlandığı zaman ise tek yapmamız gereken uygun kütüphaneleri ekleyip,mail server tanımlayıp mail gönderme işlemini tamamlamak.
Checkboxlist’te seçilen roller de ki üyelerin mail adreslerini bir dizide tutan sınıfımızı oluşturduk. clsRole
Bu sınıf seçilen rollere göre veritabanına clsData sınıfı sayesinde bağlanıp o roldeki tüm kayıtlı insanların mail adreslerini bir dataset’e aktarıyor.Bu şekilde mail sınıfında bu dataset’i kullanarak mail server’a bağlanıp mail gönderme işlemini tamamlayacağız.
Peki bu sınıftaki fonksiyona verdiğim StringCollection tipindeki role dizisini nasıl aldım onu bir görelim. Button Click olayı altına yazılan kodlar şöyle;
Artık mailler elimizde,başlık ve mesajı ise formu kullanan kişi girecek. (Bunun kontrollerini en pratik şekilde RequiredFieldValidator nesnesi ile yapabilirsiniz.)
Mail gönderimini yapalım. Her işlemde yaptığımız gibi düzenli bir uygulama gerçekleştirmek için mail gönderimi ile ilgili sınıfıda oluşturuyoruz. clsMail
Mail gönderim işlemi için Net.Mail kütüphanesini kullanıyoruz. MailMesssage:Göndereceğimiz mail nesnesidir. From:Gönderen mail adresi To:Alıcı mail adresi.Çok sayıda mail alabiliyor. Isbodyhtml:Html kodlaması içerecek mi?Yani mesaj içeriğinde html kod olduğu zaman onun yazı değil işlenmiş kod olarak görünmesini isterseniz bu seçeneği true yapıyoruz. SubjectEncoding:Bu kodlama ile alakalı bir özellik.Default Türkçe karakterlerin göründüğü kodlama türü Subject:Başlık Body:Yazı
Bunlar ayarlandıktan sonra kullanılacak mail server(client) ayarlanır ve mail gönderim işlemi gerçekleştirilir.
Toplumail.aspx.vb (Tamamı)
Örnek işlem sonucunda işlem başarılı yazısının görünmesi :)
Makalemizi tamamladık.Bu makalede rol tabanlı güvenlik sistemi içeren web uygulamalarında rollere toplu mail gönderim işlemini gerçekleştirdik ayrıca toplu mail ötesinde mail ASP.Net üzerinde SMTP kullanarak mail göndermede sıkıntı yaşayan arkadaşlarımız için yardımcı olabilecek bir mail sınıfı yazdık |
|
| Bağlantılar: bilgininefendisi.net |
| Open Source Document Project | AUP&TOS |