Ö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:
- Azure'da MySQL veritabanı oluşturma
- MySQL'de ASP.NET Kimliği tablolarını oluşturma
- MVC uygulaması oluşturma ve Bunu MySQL sağlayıcısını kullanacak şekilde yapılandırma
- 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
- Azure Portal'da oturum açın.
- Sayfanın alt kısmındaki +YENİ'ye tıklayın ve MAĞAZA'yı seçin.
- Seç ve Eklenti sihirbazındaClearDB MySQL Veritabanı'nı seçin ve iletişim kutusunun sağ alt kısmındaki sonraki oka tıklayın.
- 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.
- Veritabanı oluşturma işlemini tamamlamak için onay işaretine tıklayın.
- Veritabanınız oluşturulduktan sonra yönetim portalındaki EKLENTILER sekmesinden yönetebilirsiniz.
- Sayfanın alt kısmındaki BAĞLANTI BİlGİLerİ'ne tıklayarak veritabanı bağlantı bilgilerini alabilirsiniz.
- Kopyala düğmesine tıklayarak bağlantı dizesini kopyalayın ve daha sonra MVC uygulamanızda kullanabilmek için kaydedin.
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
- MySQLindirmeleri sayfasından MySQL Workbench aracını yükleme
- 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.
- 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.
- 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.
Ş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
- AspNet.Identity.MySQL (GitHub) konumundaki depo URL'sine göz atın.
- Kaynak kodunu indirin.
- .zip dosyasını yerel bir klasöre ayıklayın.
- AspNet.Identity.MySQL çözümünü açın ve derleyin.
Şablondan yeni bir MVC uygulama projesi oluşturma
AspNet.Identity.MySQL çözümüne sağ tıklayın ve Ekle, Yeni Proje'ye tıklayın
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 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.
Çö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.
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.
IdentityMySQLDemo projesinde,
using Microsoft.AspNet.Identity.EntityFramework;
örneklerini şununla değiştirin:
using AspNet.Identity.MySQL;
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"); } }
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));
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
IdentityMySQLDemo projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin
Uygulamayı derlemek ve çalıştırmak için Ctrl + F5 tuşlarına basın.
Sayfanın üst kısmındaki Kaydet sekmesine tıklayın.
Yeni bir kullanıcı adı ve parola girip Kaydet'e tıklayın.
Yeni kullanıcı artık kayıtlı ve oturum açmış durumda.
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.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin