Özel MySQL ASP.NET Identity Depolama Sağlayıcısı Uygulama

Tarafından Raquel Soares De Almeida, Suhas Joshi, Tom FitzMacken

ASP.NET Identity, kendi depolama sağlayıcınızı oluşturmanıza ve uygulamayı yeniden çalışmadan uygulamanıza bağlamanıza olanak tanıyan genişletilebilir bir sistemdir. Bu konuda, ASP.NET Identity için MySQL depolama sağlayıcısının nasıl oluşturulacağı açıklanmaktadır. Özel depolama sağlayıcıları oluşturmaya genel bakış için bkz. ASP.NET Kimliği için Özel Depolama Sağlayıcılarına Genel Bakış.

Bu öğreticiyi tamamlamak için Güncelleştirme 2 ile Visual Studio 2013 sahip olmanız gerekir.

Bu öğretici şunları yapacaktır:

  • Azure'da MySQL veritabanı örneğinin nasıl oluşturulacağını gösterin.
  • Azure'da tablo oluşturmak ve uzak veritabanınızı yönetmek için MySQL istemci aracının (MySQL Workbench) nasıl kullanılacağını gösterin.
  • MVC uygulama projesinde varsayılan ASP.NET Kimlik depolama uygulamasının özel uygulamamızla nasıl değiştirileceğini gösterin.

Bu öğretici ilk olarak Raquel Soares De Almeida ve Rick Anderson ( @RickAndMSFT ) tarafından yazılmıştır. Örnek proje, Suhas Joshi tarafından Identity 2.0 için güncelleştirildi. Konu Tom FitzMacken tarafından Identity 2.0 için güncelleştirildi.

Tamamlanan projeyi indirme

Bu öğreticinin sonunda, Azure'da barındırılan bir MySQL veritabanıyla çalışan ASP.NET Kimliğine sahip bir MVC uygulama projeniz olacak.

Tamamlanmış MySQL depolama sağlayıcısını AspNet.Identity.MySQL (GitHub) adresinden indirebilirsiniz.

Gerçekleştireceğin adımlar

Bu öğreticide şunları yapacaksınız:

  1. Azure'da MySQL veritabanı oluşturma
  2. MySQL'de ASP.NET Kimliği tablolarını oluşturma
  3. MVC uygulaması oluşturma ve Bunu MySQL sağlayıcısını kullanacak şekilde yapılandırma
  4. Uygulamayı çalıştırma

Bu konu, ASP.NET Kimliği mimarisini ve müşteri depolama sağlayıcısını uygularken yapmanız gereken kararları kapsamaz. Bu bilgi için bkz. ASP.NET Kimliği için Özel Depolama Sağlayıcılarına Genel Bakış.

MySQL depolama sağlayıcısı sınıflarını gözden geçirin

MySQL depolama sağlayıcısını oluşturma adımlarına geçmeden önce, depolama sağlayıcısını oluşturan sınıflara göz atalım. Kullanıcıları ve rolleri yönetmek için uygulamadan çağrılan veritabanı işlemlerini ve sınıfları yöneten sınıflara ihtiyacınız olacaktır.

Depolama sınıfları

  • IdentityUser - kullanıcının özelliklerini içerir.
  • UserStore - Kullanıcı ekleme, güncelleştirme veya alma işlemlerini içerir.
  • IdentityRole - rollerin özelliklerini içerir.
  • RoleStore - rolleri ekleme, silme, güncelleştirme ve alma işlemlerini içerir.

Veri erişim katmanı sınıfları

Bu örnekte, veri erişim katmanı sınıfları tablolarla çalışmaya yönelik SQL deyimleri içerir; ancak, kodunuzda Entity Framework veya NHibernate gibi nesne ilişkisel eşlemeyi (ORM) kullanmak isteyebilirsiniz. Özellikle, uygulamanız yavaş yükleme ve nesne önbelleğe alma içeren bir ORM olmadan düşük performansla karşılaşabilir.

  • MySQLDatabase - MySQL veritabanı bağlantısını ve veritabanı işlemlerini gerçekleştirme yöntemlerini içerir. UserStore ve RoleStore'un her ikisi de bu sınıfın bir örneğiyle oluşturulur.
  • RoleTable - rolleri depolayan tablonun veritabanı işlemlerini içerir.
  • UserClaimsTable - Kullanıcı taleplerini depolayan tablonun veritabanı işlemlerini içerir.
  • UserLoginsTable - Kullanıcı oturum açma bilgilerini depolayan tablo için veritabanı işlemlerini içerir.
  • UserRoleTable - Hangi kullanıcıların hangi rollere atandığını depolayan tablo için veritabanı işlemlerini içerir.
  • UserTable - kullanıcıları depolayan tablonun veritabanı işlemlerini içerir.

Azure'da MySQL veritabanı örneği oluşturma

  1. Azure Portal'da oturum açın.
  2. Sayfanın alt kısmındaki +YENİ'ye tıklayın ve MAĞAZA'yı seçin.
    Azure Portal deposuna erişmeyi gösteren görüntü
  3. Seç ve Eklenti sihirbazındaClearDB MySQL Veritabanı'nı seçin ve iletişim kutusunun sağ alt kısmındaki sonraki oka tıklayın.
    Clear D B My S Q L Database reklamını gösteren resim
  4. Varsayılan Ücretsiz planı koruyun ve Name değerini IdentityMySQLDatabase olarak değiştirin. Size en yakın bölgeyi seçin ve sonraki oka tıklayın.
    Seçilen ücretsiz planın ve adın resmi
  5. Veritabanı oluşturma işlemini tamamlamak için onay işaretine tıklayın.
    Satın alma ve veritabanı oluşturma gözden geçirme görüntüsü
  6. Veritabanınız oluşturulduktan sonra yönetim portalındaki EKLENTILER sekmesinden yönetebilirsiniz.
    Eklentiler sekmesinin resmi
  7. Sayfanın alt kısmındaki BAĞLANTI BİlGİLerİ'ne tıklayarak veritabanı bağlantı bilgilerini alabilirsiniz.
    Bağlantı bilgileri konumunu gösteren resim
  8. Kopyala düğmesine tıklayarak bağlantı dizesini kopyalayın ve daha sonra MVC uygulamanızda kullanabilmek için kaydedin.
    Bağlantı dizesini ve U R L'yi gösteren görüntü

MySQL veritabanında ASP.NET Identity tablolarını oluşturma

MySQL veritabanına bağlanmak ve veritabanını yönetmek için MySQL Workbench aracını yükleme

  1. MySQLindirmeleri sayfasından MySQL Workbench aracını yükleme
  2. Uygulamayı başlatın ve yeni bir bağlantı eklemek için MySQLConnections + düğmesine tıklayın. Bu öğreticinin önceki bölümlerinde oluşturduğunuz Azure MySQL veritabanından kopyaladığınız bağlantı dizesi verilerini kullanın.
  3. Bağlantıyı kurduktan sonra yeni bir Sorgu sekmesi açın; MySQLIdentity.sql'den gelen komutları sorguya yapıştırın ve veritabanı tablolarını oluşturmak için çalıştırın.
  4. Artık aşağıda gösterildiği gibi Azure'da barındırılan bir MySQL veritabanında oluşturulan tüm ASP.NET Identity gerekli tablolarına sahipsiniz.
    Kimlik için gerekli tabloları gösteren resim

Şablondan MVC uygulama projesi oluşturma ve Bunu MySQL sağlayıcısını kullanacak şekilde yapılandırma

Gerekirse Web için Visual Studio Express 2013 veya Güncelleştirme 2 ile Visual Studio 2013 yükleyin.

ASP.NET indirin. GitHub'dan Identity.MySQL projesi

  1. AspNet.Identity.MySQL (GitHub) konumundaki depo URL'sine göz atın.
  2. Kaynak kodunu indirin.
  3. .zip dosyasını yerel bir klasöre ayıklayın.
  4. AspNet.Identity.MySQL çözümünü açın ve derleyin.

Şablondan yeni bir MVC uygulama projesi oluşturma

  1. AspNet.Identity.MySQL çözümüne sağ tıklayın ve Ekle, Yeni Proje'ye tıklayın

  2. Yeni Proje Ekle İletişim Kutusunda soldaki Visual C# öğesini, ardından Web'i ve ardından Web Uygulaması'nı ASP.NET seçin. Projenize IdentityMySQLDemo adını verin; ve ardından Tamam'a tıklayın.

    Yeni proje ekle iletişim penceresinin resmi

  3. Yeni ASP.NET Projesi iletişim kutusunda, varsayılan seçeneklerle (kimlik doğrulama yöntemi olarak Bireysel Kullanıcı Hesaplarını içeren) MVC şablonunu seçin ve Tamam'a tıklayın. Yeni A S P nokta N E T projesi iletişim penceresinin resmi

  4. Çözüm Gezgini'da IdentityMySQLDemo projenize sağ tıklayın ve NuGet Paketlerini Yönet'i seçin. Arama metin kutusu iletişim kutusuna Identity.EntityFramework yazın. Sonuç listesinden bu paketi seçin ve Kaldır'a tıklayın. EntityFramework bağımlılık paketini kaldırmanız istenir. Bu uygulamada artık bu paketi kullanmayacağımız için Evet'e tıklayın.

  5. IdentityMySQLDemo projesine sağ tıklayın, Ekle, Başvuru, Çözüm, Projeler'i seçin; AspNet.Identity.MySQL projesini seçin ve Tamam'a tıklayın.

  6. IdentityMySQLDemo projesinde,
    using Microsoft.AspNet.Identity.EntityFramework;
    örneklerini şununla değiştirin:
    using AspNet.Identity.MySQL;

  7. IdentityModels.cs içinde , ApplicationDbContext'iMySqlDatabase'den türetecek şekilde ayarlayın ve bağlantı adıyla tek bir parametre alan bir oluşturucu ekleyin.

    public class ApplicationDbContext : MySQLDatabase
    {
        public ApplicationDbContext(string connectionName)
            : base(connectionName)
        {
        }
    
        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext("DefaultConnection");
        }
    }
    
  8. IdentityConfig.cs dosyasını açın. ApplicationUserManager.Create yönteminde örneği oluşturan UserManager öğesini aşağıdaki kodla değiştirin:

    var manager = new ApplicationUserManager(
        new UserStore<ApplicationUser>(
        context.Get<ApplicationDbContext>() as MySQLDatabase));
    
  9. web.config dosyasını açın ve DefaultConnection dizesini, vurgulanan değerleri önceki adımlarda oluşturduğunuz MySQL veritabanının bağlantı dizesiyle değiştirerek bu girişle değiştirin:

    <add name="DefaultConnection" connectionString="Database=IdentityMySQLDatabase;
    Data Source=<DataSource>;User Id=<UserID>;Password=<Password>"
    providerName="MySql.Data.MySqlClient" />
    

Uygulamayı çalıştırma ve MySQL DB'ye bağlanma

  1. IdentityMySQLDemo projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin

  2. Uygulamayı derlemek ve çalıştırmak için Ctrl + F5 tuşlarına basın.

  3. Sayfanın üst kısmındaki Kaydet sekmesine tıklayın.

  4. Yeni bir kullanıcı adı ve parola girip Kaydet'e tıklayın.

    Yeni kullanıcı adı ve parolayı gösteren resim

  5. Yeni kullanıcı artık kayıtlı ve oturum açmış durumda.

    Yeni kullanıcının kayıtlı ve oturum açmış olduğunu gösteren çizim

  6. MySQL Workbench aracına Geri dön ve IdentityMySQLDatabase tablosunun içeriğini inceleyin. Yeni kullanıcıları kaydederken kullanıcılar tablosunun girişlerini inceleyin.

    My S Q L Workbench inceleme aracının resmi

Sonraki Adımlar

Bu uygulamada diğer kimlik doğrulama yöntemlerini etkinleştirme hakkında daha fazla bilgi için Bkz. Facebook ve Google OAuth2 ile ASP.NET MVC 5 Uygulaması oluşturma ve OpenID Oturum Açma.

Veritabanınızı OAuth ile tümleştirmeyi ve kullanıcıların uygulamanıza erişimini sınırlandıracak roller ayarlamayı öğrenmek için bkz. Üyelik, OAuth ve SQL Veritabanı ile Azure'a Güvenli ASP.NET MVC 5 uygulaması dağıtma.