Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Raquel Soares De Almeida, Suhas Joshi, Tom FitzMacken
ASP.NET Identity adalah sistem yang dapat diperluas yang memungkinkan Anda membuat penyedia penyimpanan Anda sendiri dan menyambungkannya ke aplikasi Anda tanpa menggunakan kembali aplikasi. Topik ini menjelaskan cara membuat penyedia penyimpanan MySQL untuk identitas ASP.NET. Untuk gambaran umum pembuatan penyedia penyimpanan kustom, lihat Gambaran Umum Penyedia Penyimpanan Kustom untuk identitas ASP.NET.
Untuk menyelesaikan tutorial ini, Anda harus memiliki Visual Studio 2013 dengan Pembaruan 2.
Tutorial ini akan:
- Perlihatkan cara membuat instans database MySQL di Azure.
- Perlihatkan cara menggunakan alat klien MySQL (MySQL Workbench) untuk membuat tabel dan mengelola database jarak jauh Anda di Azure.
- Tunjukkan cara mengganti implementasi penyimpanan ASP.NET Identity default dengan implementasi kustom kami pada proyek aplikasi MVC.
Tutorial ini awalnya ditulis oleh Raquel Soares De Almeida dan Rick Anderson ( @RickAndMSFT ). Proyek sampel diperbarui untuk Identity 2.0 oleh Suhas Joshi. Topik ini diperbarui untuk Identity 2.0 oleh Tom FitzMacken.
Mengunduh proyek yang telah selesai
Di akhir tutorial ini, Anda akan memiliki proyek aplikasi MVC dengan ASP.NET Identity yang bekerja dengan database MySQL yang dihosting di Azure.
Anda dapat mengunduh penyedia penyimpanan MySQL yang telah selesai di AspNet.Identity.MySQL (GitHub).
Langkah-langkah yang akan Anda lakukan
Dalam tutorial ini Anda akan:
- Membuat database MySQL di Azure
- Membuat tabel identitas ASP.NET di MySQL
- Membuat aplikasi MVC dan mengonfigurasinya untuk menggunakan penyedia MySQL
- Menjalankan aplikasi
Topik ini tidak mencakup arsitektur identitas ASP.NET dan keputusan yang harus Anda buat saat menerapkan penyedia penyimpanan pelanggan. Untuk informasi tersebut, lihat Gambaran Umum Penyedia Penyimpanan Kustom untuk identitas ASP.NET.
Meninjau kelas penyedia penyimpanan MySQL
Sebelum melompat ke langkah-langkah untuk membuat penyedia penyimpanan MySQL, mari kita lihat kelas yang membentuk penyedia penyimpanan. Anda akan memerlukan kelas yang mengelola operasi dan kelas database yang dipanggil dari aplikasi untuk mengelola pengguna dan peran.
Kelas penyimpanan
- IdentityUser - berisi properti untuk pengguna.
- UserStore - berisi operasi untuk menambahkan, memperbarui, atau mengambil pengguna.
- IdentityRole - berisi properti untuk peran.
- RoleStore - berisi operasi untuk menambahkan, menghapus, memperbarui, dan mengambil peran.
Kelas lapisan akses data
Untuk contoh ini, kelas lapisan akses data berisi pernyataan SQL untuk bekerja dengan tabel; namun, dalam kode Anda, Anda mungkin ingin menggunakan pemetaan relasional objek (ORM) seperti Entity Framework atau NHibernate. Secara khusus, aplikasi Anda mungkin mengalami performa yang buruk tanpa ORM yang mencakup pemuatan malas dan penembolokan objek.
- MySQLDatabase - berisi koneksi dan metode database MySQL untuk melakukan operasi database. UserStore dan RoleStore keduanya dibuat dengan instans kelas ini.
- RoleTable - berisi operasi database untuk tabel yang menyimpan peran.
- UserClaimsTable - berisi operasi database untuk tabel yang menyimpan klaim pengguna.
- UserLoginsTable - berisi operasi database untuk tabel yang menyimpan informasi masuk pengguna.
- UserRoleTable - berisi operasi database untuk tabel yang menyimpan pengguna mana yang ditetapkan ke peran mana.
- UserTable - berisi operasi database untuk tabel yang menyimpan pengguna.
Membuat instans database MySQL di Azure
- Masuk ke Portal Microsoft Azure.
- Klik +BARU di bagian bawah halaman, lalu pilih SIMPAN.
- Di wizard Pilih dan Add-on , pilih ClearDB MySQL Database dan klik panah berikutnya di kanan bawah dialog.
- Pertahankan paket Gratis default dan ubah Nama menjadi IdentityMySQLDatabase. Pilih wilayah terdekat Anda lalu klik panah berikutnya.
- Klik tanda centang untuk menyelesaikan pembuatan database.
- Setelah database Anda dibuat, Anda bisa mengelolanya dari tab ADD-ONS di portal manajemen.
- Anda bisa mendapatkan informasi koneksi database dengan mengklik INFO KONEKSI di bagian bawah halaman.
- Salin string koneksi dengan mengklik tombol salin dan simpan sehingga Anda dapat menggunakannya nanti di aplikasi MVC Anda.
Membuat tabel identitas ASP.NET dalam database MySQL
Instal alat MySQL Workbench untuk menyambungkan dan mengelola database MySQL
- Instal alat MySQL Workbench dari halaman unduhan MySQL
- Luncurkan aplikasi dan tambahkan klik tombol MySQLConnections + untuk menambahkan koneksi baru. Gunakan data string koneksi yang Anda salin dari database Azure MySQL yang Anda buat sebelumnya dalam tutorial ini.
- Setelah membuat koneksi, buka tab Kueri baru; tempelkan perintah dari MySQLIdentity.sql ke dalam kueri dan jalankan untuk membuat tabel database.
- Anda sekarang memiliki semua tabel ASP.NET Identity yang diperlukan yang dibuat pada database MySQL yang dihosting di Azure seperti yang ditunjukkan di bawah ini.
Membuat proyek aplikasi MVC dari templat dan mengonfigurasinya untuk menggunakan penyedia MySQL
Jika diperlukan, instal Visual Studio Express 2013 untuk Web atau Visual Studio 2013 dengan Pembaruan 2.
Unduh ASP.NET. Proyek Identity.MySQL dari GitHub
- Telusuri ke URL repositori di AspNet.Identity.MySQL (GitHub).
- Unduh kode sumber.
- Ekstrak file .zip ke dalam folder lokal.
- Buka solusi AspNet.Identity.MySQL dan bangun.
Membuat proyek aplikasi MVC baru dari templat
Klik kanan solusi AspNet.Identity.MySQL dan Tambahkan, Proyek Baru
Dalam Dialog Tambahkan Proyek Baru pilih Visual C# di sebelah kiri, lalu Web lalu pilih ASP.NET Aplikasi Web. Beri nama proyek Anda IdentityMySQLDemo; lalu klik OK.
Dalam dialog Proyek ASP.NET Baru , pilih templat MVC dengan opsi default (yang menyertakan Akun Pengguna Individu sebagai metode autentikasi) dan klik OK.
Di Penjelajah Solusi, klik kanan proyek IdentityMySQLDemo Anda dan pilih Kelola Paket NuGet. Dalam dialog kotak teks pencarian, ketik Identity.EntityFramework. Pilih paket ini dalam daftar hasil dan klik Hapus instalan. Anda akan diminta untuk menghapus instalasi paket dependensi EntityFramework. Klik Ya karena kami tidak akan lagi menggunakan paket ini pada aplikasi ini.
Klik kanan proyek IdentityMySQLDemo, pilih Tambahkan, Referensi, Solusi, Proyek; pilih proyek AspNet.Identity.MySQL dan klik OK.
Dalam proyek IdentityMySQLDemo, ganti semua referensi ke
using Microsoft.AspNet.Identity.EntityFramework;
dengan
using AspNet.Identity.MySQL;
Di IdentityModels.cs, atur ApplicationDbContext untuk berasal dari MySqlDatabase dan sertakan konstruktor yang mengambil satu parameter dengan nama koneksi.
public class ApplicationDbContext : MySQLDatabase { public ApplicationDbContext(string connectionName) : base(connectionName) { } public static ApplicationDbContext Create() { return new ApplicationDbContext("DefaultConnection"); } }
Buka file IdentityConfig.cs. Dalam metode ApplicationUserManager.Create , ganti instantiating UserManager dengan kode berikut:
var manager = new ApplicationUserManager( new UserStore<ApplicationUser>( context.Get<ApplicationDbContext>() as MySQLDatabase));
Buka file web.config dan ganti string DefaultConnection dengan entri ini mengganti nilai yang disorot dengan string koneksi database MySQL yang Anda buat pada langkah-langkah sebelumnya:
<add name="DefaultConnection" connectionString="Database=IdentityMySQLDatabase; Data Source=<DataSource>;User Id=<UserID>;Password=<Password>" providerName="MySql.Data.MySqlClient" />
Jalankan aplikasi dan sambungkan ke MySQL DB
Klik kanan proyek IdentityMySQLDemo dan pilih Atur sebagai Proyek Startup
Tekan Ctrl + F5 untuk membuat dan menjalankan aplikasi.
Klik tab Daftar di bagian atas halaman.
Masukkan nama pengguna dan kata sandi baru lalu klik Daftar.
Pengguna baru sekarang terdaftar dan masuk.
Kembali ke alat MySQL Workbench dan periksa konten tabel IdentityMySQLDatabase . Periksa tabel pengguna untuk entri saat Anda mendaftarkan pengguna baru.
Langkah berikutnya
Untuk informasi selengkapnya tentang cara mengaktifkan metode autentikasi lain di aplikasi ini, lihat Membuat Aplikasi ASP.NET MVC 5 dengan Facebook dan Google OAuth2 dan Masuk OpenID.
Untuk mempelajari cara mengintegrasikan DB Anda dengan OAuth dan menyiapkan peran untuk membatasi akses pengguna ke aplikasi Anda, lihat Menyebarkan aplikasi Secure ASP.NET MVC 5 dengan Keanggotaan, OAuth, dan SQL Database ke Azure.