Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Cenk Özdemir
Cenk Özdemir
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
4 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: app_data configuration erisim farkli kullanici machine.config sirketi sistemi uygulamasi veritabani veritabanina veritabanini veritabaninin veritabaniyla web.config ASP.NET Cenk Özdemir
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : ASP.NET
Yayınlanma Tarihi : 13.2.2007
Okunma Sayısı : 31102
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 26.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 26.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 26.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 26.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Sql Sunucusunda Birden Fazla Üyelik Sistemi Barındırma
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Bu makalede; bir SQL sunucusunda çok sayıda üyelik sistemini nasıl çalıştıracağımızı, ilgili ayarları nasıl konfigüre etmemiz gerektiğinizi incelemeye çalışacağız. ASP.NET 2.0 ile birlikte gelen Login kontrolleri, birkaç tıklama ve sürükle-bırak ile bir üyelik sistemi oluşturmamıza imkan sağlıyor. Fakat işlerin bu kadar basite indirgenmiş olmasıyla birlikte, bir takım kısıtlamalardan da söz etmek mümkün. Bunlardan en fazla can sıkanı da, üye bilgilerini tutan veritabanının ./SQLEXPRESS üzerinde çalışmak zorunda olması. (Elbette machine.config dosyasında yapılan ayarlar ile farklı bir sql sunucusuna yönlendirmede yapabiliriz.) Eğer sisteminizde, SQL’in daha yüksek bir sürümü kuruluysa; projenizin App_Data klasörü altında oluşturulmuş standart bir aspnetdb veritabanı yerine, kendi yarattığınız veritabanıyla çalışmak istemeniz olası bir durumdur. Şimdi bu ihtiyaçlar doğrultusunda, konfigürasyon ayarlarımızı nasıl şekillendirmemiz gerektiğini bir örnek üzerinde incelemeye çalışalım.
 
A ve B şirketleri için iki web uygulaması tasarlamak istediğimizi ve bu uygulamalarda kullanılmak üzere iki ayrı üyelik sistemine ihtiyacımız olduğunu düşünelim. İşlem basit görünüyor. Ortada iki ayrı üyelik sistemi varsa, iki de ayrı veritabanına ihtiyacamız olacaktır. Öyleyse, öncelikle bu iki veritabanını yaratacağız. Daha sonra uygulamaların içinden, kimin hangi veritabanıyla ilişkilendirileceğini söyleyeceğiz.

Eğer üyelik sistemlerini SQLEXPRESS’ de çalıştıracaksak, herhangi bir ayar yapmamıza gerek yoktur. Çünkü Login kontrollerini kullandığımızda, varsayılan ayarlar doğrultusunda , veritabanımız otomatik olarak yaratılacak ve uygulamamızın App_Data klasöründe aspnetdb.mdf adıyla yer alacaktır.
A Şirketi Projesi

1-A şirketi için yeni bir web uygulaması yaratarak işe başlayalım.



2-Uygulamamızı yarattıktan sonra, solution explorer penceresinde, projeye sağ tuşla tıklayarak add file seçeneğine gelelim ve bir de web.config dosyası (web configuration file-web konfigursayon dosyası) ekleyelim.


3-Açılan web.config dosyamızda ilk önce, aşağıdaki düzenlemeleri yapalım.

<compilation debug="true"/>
  • compilation debug : Projenin debug edilip edilmeyeceğini belirtir.

<authentication mode="Forms">
  <forms loginUrl="Login.aspx"/>
</authentication>
<authorization>
  <deny users="?"/>
</authorization>
  • authentication mode : Form tabanlı doğrulama yapılacağını söyler.

  • loginUrl : Projemizin login sayfası. Giriş izni gereken sayfa çağrıldığında, eğer kullanıcı giriş yapmamışsa, bu sayfaya yönlendirilir.

  • deny users : ‘?’ işaretçisiyle, siteye daha önceden giriş yapmamış kullanıcının (Anonymous User-İsimsiz Kullanıcı) erişim iznine sahip olmadığını belirtiyoruz.

Kullanıcı erişim izinlerini belirlerken allow, deny sırasını doğru yazmak gerekir. Kod yukarıdan aşağıya doğru çalışacağından, buradaki yapılandırmada yapılacak bir hata, erişim haklarının doğru dağıtılmamasına neden olacaktır.Örneğin önce <allow users="*"> peşinden <deny users="?"> yazmak gereksiz bir iştir,çünkü ilk bildirimde tüm kullanıcılara (bunlara isimsiz kullanıcılar da dahil) erişim hakkı verildiğinden,ikinci bildirim anlamını kaybeder.Fakat önce <deny users="?">,sonra <allow users="*"> bildirimlerini yaparsak,isimsiz kullanıcılar hariç tüm kullanıcılara erişim hakkı tanımış oluruz.
4-Daha sonra, Visual Studio araçlarından, Visual Studio 2005 Command Prompt’ u çalıştıralım.



Komut satırına aşağıdaki kodu yazarak, A şirketinin üyelik sistemine ilişkin veritabanını manual olarak yaratalım.

aspnet_regsql –E –S localhost –d dbA –A all
Parametrelere de kısaca değinirsek:
 
-E : Sunucuya windows authentication yoluyla bağlanılacağını belirtir.
-S : Veritabanının kurulacağı SQL sunucusunun çalıştığı bilgisayar adını belirtir.
-d : Yaratılacak veritabanının adını belirtir.
-A : Veritabanına hangi özelliklerin dahil edileceğini belirtir. Biz all seçeneğiyle, Membership, Profile, RoleManager, Personalization ve SqlWebEventProvider olmak üzere tüm özellikleri veritabanımıza dahil ediyoruz.





5-Artık veritabanımız hazır olduğuna göre web.config dosyamıza geri dönerek bağlantı ayarlarını yapabiliriz.
 
Bu aşamada, yapacağımız işlemi daha iyi anlayabilmek için, öncelikle machine.config dosyasını açıp, aşağıdaki satırları incelemekte fayda vardır.

Machine.config,ASP.NET uygulamalarının yapılandırılmasıyla ilgili bilgileri içerir ve “C:\WINDOWS\Microsoft.NET\Framework\[Framework versiyon]\CONFIG” yolu altında yer alır.
Web.config ise machine.config içerisindeki bilgiyi ezerek uygulama, klasör, sayfa bazında yapılandırma yapmamızı sağlar.
<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>
Gördüğünüz üzere, machine.config içerisinde, ”LocalSqlServer” adında bir Sql bağlantısı oluşturulmuş ve connectionString özelliğinde, bağlantının, .\SQLEXPRESS üzerinde çalışan aspnetdb veritabanıyla kurulacağı söylenmiştir.Fakat biz manual olarak yarattığımız veritabanıyla çalışacağımızdan bu bağlantıyı kullanmayacağız.Bu sebeple web.config dosyamızı açıp, aşağıdaki kodu yazalım ve kendi bağlantımızı oluşturalım.

Machine.config içindeki yapılandırmayı web.config’te ezmek yerine, direkt olarak machine.config içindende değişebiliriz; ancak konfigürasyon orjinalliğini yitirir ve yapılan bir hatanın tüm uygulamaları etkilemesi olasıdır.
<connectionStrings>
    <remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" connectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=dbA" providerName="System.Data.SqlClient" />
</connectionStrings>
Burada, machine.config’de tanımlı, varsayılan bağlantıyı kullanmayacağımızı belirtip, bağlantı modelindeki data source ve initial catalog niteliklerini, bir önceki adımda oluşturduğumuz veritabanını göz önünde bulundurarak ayarlıyoruz.

Tanımladığımız bağlantının da adının “LocalSqlServer” olduğuna dikkatinizi çekerim. Eğer burada farklı bir isimlendirme yaparsak, machine.config içindeki sağlayıcı yapılandırmalarındaki bağlantı adıyla örtüşmeyeceği için sistem çalışmayacaktır. Bu durumda machine.config içerisindeki varsayılan sağlayıcı yapılandırmalarını da web.config’ te ezmek gerekir.
6-Bağlantımızı oluşturduktan sonra yapılandırmamızın problem yaratmadan çalışıyor olması gerekir. İsterseniz, devam etmeden önce birkaç kullanıcı yaratmayı deneyelim.
Bunun için, Web Site Administraion Tool’unu (WSAT) kullanacağız.





Ekrana gelen arayüz Security, Application Configuration ve Provider Configuration olmak üzere üç bölümden oluşuyor.

  • Security : Kullanıcı yaratma,silme gibi işlemlerin yanısıra,rollerini belirleme ve erişimleri düzenleme gibi işlemleri de yapabilmemize imkan sağlar.

  • Application Configuration : Debug seçeneği,varsayılan hata sayfası,SMTP ayarları gibi uygulama yapılandırmalarını kod tarafında uğraşmadan kolayca yapabildiğimiz kısım.

  • Provider Configuration : Veritabanına ilişkin sağlayıcı ayarlarını yaptığımız kısım.

Şimdilik bizi ilgilendiren Security kısmı olduğu için bu sekmeye geçelim.



Daha sonra Create User diyerek, yeni kullanıcı yaratma formunu açalım.



Burada kafamıza göre birkaç kullanıcı yarattıktan sonra WSAT’ı kapatalım. Dilerseniz devam etmeden önce kullanıcıların nerede tutulduğunu görmek için, dbA veritabanının içindeki dbo.aspnet_Users tablosunu inceleyebilisiniz.



7-Sistemin nasıl çalıştığını görmek amacıyla, Login kontrolü içeren ikinci bir web formuna ihtiyacımız olacaktır. Bu yüzden projemize sağ tuşla tıklayıp, add new item diyelim ve Login.aspx adıyla, projemize yeni bir web form dahil edelim. Login.aspx sayfasını açıp dizayn kısmına geçelim ve formumuza, toolbox’tan bir adet Login kontrolü sürükleyip bırakalım.



Default.aspx sayfamıza da LoginView ve LoginName kontrollerini ekleyip, aşağıdaki gibi tasarlayalım.



Son olarak projeye sağ tuşla tıklayıp View in Browser seçeneğiyle sitemizi test edelim.





İstediğimiz şeyi A şirketi için kurguladık. Şimdi aynı uygulamayı B şirketi için geliştirirken nelere dikkat etmemiz gerektiği üzerinde duracağız.
 
B Şirketi Projesi
 
Solution’a sağ tuşla tıklayıp, Add > New WebSite diyerek “B_Sirketi” adında yeni bir proje oluşturalım. İkinci bir üyelik sistemi kurarken ilk yapmamız gereken, aspnet_regsql aracını kullanarak bir veritabanı daha yaratmak olacaktır. Tabi bu sefer veritabanı adını dbB olarak değiştirmeyi unutmamak gerekir. Bu amaçla Visual Studio 2005 Command Prompt’u açıp aşağıdaki kodu çalıştıralım.

aspnet_regsql –E –S localhost –d dbB –A all


İşleri çabuklaştırmak için A_Sirketi uygulamasındaki Default.aspx, Login.aspx ve Web.config dosyalarını kopyalayıp, B_Sirketi web site projesi içerisine yapıştıralım.



Son olarak da B_Sirketi içine kopyaladığımız web.config’te, bağlantının initial catalog niteliğine dbB değerini atayalım.

<connectionStrings>
    <remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" connectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=dbB" providerName="System.Data.SqlClient" />
</connectionStrings>
Bu kısmı da hallettikten sonra geriye sadece projeyi test etmek kalıyor. Web Site Administraion Tool’ unu açıp B_Sirketi için de birkaç kullanıcı oluşturalım. Oluşturduğumuz kullanıcalar dbB veritabanındaki dbo.aspnet_Users tablosunda aşağıdaki gibi yer alacaktır.



Artık her iki uygulamayı da çalıştırıp yarattığınız kullanıcılarla giriş yapmayı deneyebilirsiniz. Gördüğünüz gibi artık birbirinden bağımsız çalışan iki ayrı üyelik sistemimiz var. Her iki sistem içinde de farklı kullanıcılar yaratıp, bunların erişim haklarını, rollerini belirlememiz mümkündür. Ayrıca hem SQLEXPRESS çatısından kurtulduk, hem de veritabanının App_Data içinde yaratılmasının önüne geçtik. Şimdi, bu ana kadar yaptıklarımıza kısaca göz atarsak:

  • A ve B şirketleri için iki ayrı web uygulaması oluşturduk.

  • Örneğimizdeki şirketlerin üyelik sistemlerine ait veritabanlarını aspnet_regsql aracını kullanarak oluşturduk.

  • Machine.config içindeki yapılandırmayı, web.config içerisinde ezerek veritabanı bağlantısını şekillendirdik.

  • Web Site Administraion Tool’ u aracılığıyla kullanıcı hesaplarını yarattık.

  • Login kontrollerini kullanarak projelerimizi test ettik.

Bir dahaki makalede görüşmek üzere,hoşçakalın…
 
Cenk Özdemir
[email protected]

Makale:
Sql Sunucusunda Birden Fazla Üyelik Sistemi Barındırma ASP.NET Cenk Özdemir
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor