2 Mart 2009 Pazartesi

SPSecurity.RunWithElevatedPriviliges() Metodu ve Kullanım Alanları

MOSS 2007 üzerinde uygulama geliştirme yaparken dikkat etmemiz gereken konulardan biri yazacağımız kodda x bi kullanıcıyı adimn gibi daha üst bir rolün yetkileriyle donatıp o yetkilere göre bazı işlemler yapmasını sağlayabiliriz. Mesela kodumuz içerisinden kullanıcılarımıza UserProfile nesnelerine erişip veri okuyup veri yazma hakkı verecek, sharepointteki bir document librarydeki bir dokümanı okuyup yazmasını sağlayacaksak(örnekler çoğaltılabilir), yetki sorunuyla karşılaşırız çoğu zaman. Bu sorunu aşmanın yolu SPSecurity sınıfının RunWithElevatedPriviliges static metodunu bir delege parametreyle çağırmak ve bu delege yoluyla öncelikle yeni bir SPSite nesnesi yaratıp, bu elevate edeceğimiz priviligeların geçerli olacağı siteyi belirtip daha sonrasında elevate ettiğimiz kullanıcının yetkilerine sahip olarak işlemlerimizi yapmak.
Örnek kodu da aşağıda paylaşıyorum. Bir sonraki postta görüşmek üzere..

SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite topSite = new SPSite(SPContext.Current.Site.WebApplication.Sites["/"].ID))
{
SPFolder folder = topSite.RootWeb.GetFolder(belgelerFolder);

SPFileCollection files = folder.Files;
SPFile file = files["GnTahmin.xml"];
doc.Load(file.OpenBinaryStream(SPOpenBinaryOptions.None));
}
}
);

Hiç yorum yok:

Yorum Gönder