Uygulamalarınızın arasında tek bir giriş(login) ekranından giriş yapıp, geçişler yapmanız için yapmanız gerekenler çok basit.
1- Web.config dosyasında gerekli ayarları yapmak
2- Uygulamalarınızın aynı makina üzerinde olduğundan emin olmak.
3- Her uygulamanızda aslında bir giriş sayfasına sahip olmak
Gelelim web.config dosyasındaki yapılacak düzenlemelere
1.1 - Gelen genel kullanıcılar kısıtlayalım
<system.web> içindeki alandaki authorization alanına tüm genel kullanıcıları yasakladığınıza dair aşağıdaki kodu ekliyoruz.
<authorization>
<deny users="?" />
</authorization>
Eğer herkese izin vermeniz gerekirse burayı boş geçebilirsiniz
<authorization/>
1.2 - Uygulamada genel kullanıcılara izin verilecek dosyalara ve dökümanlara karar vermelisiniz veya bazı rollere izin giriş için izin verecek olabilirsiniz. Bunları <system.web/> den sonra location alanlarında belirleyebilirsiniz. Herkesin sitenize girmesini engellediyseniz, en azından giriş sayfasındaki resimlerin ve giriş sayfasının girişe açık olması gerektiğini hatırlayın.
<location path="image">
<system.web>
<pages theme="Office2003Blue">
</pages>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Eğer bazı kullanıcılara veya rollere uygulamayı açacaksanız, aşağıdaki gibi ayarlamaları yapmalısınız.
<location path="IKSayfalari">
<system.web>
<authorization>
<allow roles="IK" />
<deny users="*" />
</authorization>
</system.web>
</location>
Bu rolleri tabii ki authentication cookie içinde tanımlamanız gerekiyor. Buraya bir parantez açıp bunu da ekleyeyim.
FormsAuthentication.SetAuthCookie(kullaniciAdi, false);
FormsAuthenticationTicket ticket1 = new FormsAuthenticationTicket(
1, // versiyon
this.TextBox_username.Text.Trim(), // kullanıcı adı
DateTime.Now, // şimdiki zaman, cookienin oluşturulduğu zaman
DateTime.Now.AddMinutes(10), // 10 dakika sonra cookie etkisiz kalacak
false, // cookie persistent değil
"IK" // içinde tutulacak kullanıcı rolü
);
HttpCookie cookie1 = new HttpCookie(
FormsAuthentication.FormsCookieName,
FormsAuthentication.Encrypt(ticket1) );
Response.Cookies.Add(cookie1);
Şimdi sıra geldi her uygulamada aynı tanımlamanız gereken machine key alanını eklemeye
<authentication mode="Forms">
<forms name="UygulamayaAitFormAlani" loginUrl="index.aspx" cookieless="UseCookies" protection="All" timeout="30" slidingExpiration="false" enableCrossAppRedirects="false" requireSSL="false" />
</authentication>
<machineKey validationKey="BurayaBirKeyBelirliyorsunuz" decryptionKey="BurayadaBirÇözücüKeyBelirliyorsunuz" validation="SHA1" />
Bu alandaki değerleri geçiş sağlayacağınız her uygulamada aynı tutuyorsunuz.
Test yapabilirsiniz, kolay gelsin :)