30 Mayıs 2012 Çarşamba

C# ile Membership

Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile uygulamalarımızda kullanıcı kimlik doğrulama ve yetkilendirme işlemlerini yönetmek için kullandığımız Membership özelliğini yakından inceleyeceğiz. Membership, kullanıcıları kaydetme, oturum açma, şifreleri yönetme ve rolleri belirleme gibi işlemleri kolaylaştıran bir dizi araç sunar.

Membership Nedir?

Membership, .NET Framework'ün bir parçası olarak gelen ve web uygulamalarında kullanıcı yönetimi için standart bir çözüm sunan bir sistemdir. Bu sistem, geliştiricilerin kullanıcı kimlik doğrulama ve yetkilendirme işlemlerini güvenli ve verimli bir şekilde gerçekleştirmesine yardımcı olur.

Membership Kurulumu

Membership'i kullanabilmek için öncelikle veritabanında gerekli tabloların ve stored procedure'lerin oluşturulması gerekir. Bu işlem için aspnet_regsql aracı kullanılır.

  1. Visual Studio Command Prompt'u Açın:
    • Başlat -> Programlar -> Visual Studio -> Visual Studio Tools -> Visual Studio Command Prompt yolunu izleyerek Visual Studio Command Prompt'u açın.
  2. aspnet_regsql Aracını Çalıştırın:
    • Komut satırına aspnet_regsql yazıp Enter tuşuna basın. Bu komut, Membership ile ilgili veritabanı nesnelerini oluşturmak için bir kurulum sihirbazı başlatır. Sihirbazı takip ederek gerekli adımları tamamlayın. 

Web.config Dosyasında Yapılandırma

Membership'i kullanabilmek için web.config dosyasında da bazı yapılandırmalar yapmamız gerekir. İşte temel yapılandırma adımları:

  1. Bağlantı Dizesini Ayarlayın:
    • web.config dosyasında connectionStrings bölümüne veritabanı bağlantı dizesini ekleyin.
  2. Membership Sağlayıcısını Yapılandırın:
    • system.web bölümünde membership ve providers bölümlerini ekleyerek varsayılan sağlayıcıyı (genellikle SqlMembershipProvider) yapılandırın.

<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=YourDatabaseName;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="SqlProvider">
      <providers>
        <add name="SqlProvider"
              type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers"
              connectionStringName="DefaultConnection"
              enablePasswordRetrieval="false"
              enablePasswordReset="true"
              requiresQuestionAndAnswer="false"
              requiresUniqueEmail="true"
              maxInvalidPasswordAttempts="5"
              minRequiredPasswordLength="6"
              passwordAttemptWindow="10"
              applicationName="/" />
      </providers>
    </membership>
    </system.web>
</configuration>

Membership Sınıfını Kullanma

System.Web.Security ad alanında bulunan Membership sınıfı, kullanıcı yönetimi ile ilgili birçok metot ve özellik sunar. İşte bazı temel kullanım örnekleri:

  • Yeni Kullanıcı Oluşturma:

MembershipCreateStatus status;
MembershipUser newUser = Membership.CreateUser("kullaniciadi", "sifre", "[email protected]", null, null, true, out status);
if (status == MembershipCreateStatus.Success)
{
    // Kullanıcı başarıyla oluşturuldu
}
else
{
    // Hata oluştu
}

  • Kullanıcı Girişi Doğrulama:

bool isValid = Membership.ValidateUser("kullaniciadi", "sifre");
if (isValid)
{
    // Kullanıcı doğrulandı
}
else
{
    // Kullanıcı doğrulanamadı
}

  • Oturum Açmış Kullanıcı Bilgilerini Alma:

MembershipUser currentUser = Membership.GetUser();
Guid userKey = (Guid)currentUser.ProviderUserKey; // Kullanıcının benzersiz kimliği
string username = currentUser.UserName;
string email = currentUser.Email;

  • Kullanıcı Şifresini Sıfırlama:

string sifreSoru = Membership.GetUser("kullaniciadi").PasswordQuestion;
string yeniSifre = Membership.ResetPassword("kullaniciadi",sifreSoru);

Rol Yönetimi

Membership, kullanıcıları rollerle gruplandırmayı da destekler. Rol tabanlı yetkilendirme ile belirli sayfalara veya işlevlere yalnızca belirli rollere sahip kullanıcıların erişmesini sağlayabiliriz.

  • Rol Oluşturma:

if (!Roles.RoleExists("Admin"))
{
    Roles.CreateRole("Admin");
}

  • Kullanıcıyı Role Ekleme:

Roles.AddUserToRole("kullaniciadi", "Admin");

  • Kullanıcının Rolünü Kontrol Etme:

if (Roles.IsUserInRole("kullaniciadi", "Admin"))
{
    // Kullanıcı Admin rolünde
}

  • Sayfaya Yetki Verme (Web.config):

<location path="AdminSayfasi.aspx">
	<system.web>
	  <authorization>
		<allow roles="Admin"/>
		<deny users="*"/>
	  </authorization>
	</system.web>
</location>

Önemli Notlar

  • machine.config dosyası, .NET Framework'ün genel yapılandırma ayarlarını içerir. Bu dosyayı doğrudan değiştirmek yerine, uygulama düzeyindeki web.config dosyasını kullanmanız önerilir.
  • aspnet_regsql aracı, Membership ile ilgili veritabanı nesnelerini kurmak için kullanılır. Bu aracı çalıştırmadan Membership'i kullanmaya çalışırsanız hatalarla karşılaşırsınız.
  • web.config dosyasındaki <authorization> bölümünde, yetkilendirme kurallarını tanımlayabilirsiniz. allow ve deny öğeleri ile belirli kullanıcılara veya rollere erişim izni verebilir veya erişimi engelleyebilirsiniz. allow içinde tanımlanan roller erişime sahip olur. Eğer altta `deny users="*" satırı varsa allow içinde belirtilen rol dışındakilerin erişimi engellenmiş olur.

Sonuç

C# .NET Framework 4 ile Membership, web uygulamalarında kullanıcı yönetimi, kimlik doğrulama ve yetkilendirme işlemlerini kolaylaştıran güçlü bir sistemdir. Bu makalede, Membership'in temel kavramlarını, kurulumunu ve kullanımını ele aldık. Umarım bu bilgiler, C# .NET Framework 4 ile uygulamalar geliştirirken size yardımcı olur. Bir sonraki yazımızda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz.

Webkolog'u takipte kalın!

Hepinize bol kodlu günler dilerim!

 

0 yorum:

Yorum Gönder