Bagikan melalui


Menerapkan Penyedia Penyimpanan Identitas ASP.NET MySQL Kustom

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:

  1. Membuat database MySQL di Azure
  2. Membuat tabel identitas ASP.NET di MySQL
  3. Membuat aplikasi MVC dan mengonfigurasinya untuk menggunakan penyedia MySQL
  4. 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

  1. Masuk ke Portal Microsoft Azure.
  2. Klik +BARU di bagian bawah halaman, lalu pilih SIMPAN.
    Gambar memperlihatkan cara mengakses penyimpanan Portal Microsoft Azure
  3. Di wizard Pilih dan Add-on , pilih ClearDB MySQL Database dan klik panah berikutnya di kanan bawah dialog.
    Gambar yang menampilkan iklan Clear D B My S Q L Database
  4. Pertahankan paket Gratis default dan ubah Nama menjadi IdentityMySQLDatabase. Pilih wilayah terdekat Anda lalu klik panah berikutnya.
    Gambar paket gratis yang dipilih dan nama
  5. Klik tanda centang untuk menyelesaikan pembuatan database.
    Gambar tinjau pembelian dan pembuatan database
  6. Setelah database Anda dibuat, Anda bisa mengelolanya dari tab ADD-ONS di portal manajemen.
    Gambar tab add-on
  7. Anda bisa mendapatkan informasi koneksi database dengan mengklik INFO KONEKSI di bagian bawah halaman.
    Gambar memperlihatkan lokasi info koneksi
  8. Salin string koneksi dengan mengklik tombol salin dan simpan sehingga Anda dapat menggunakannya nanti di aplikasi MVC Anda.
    Gambar memperlihatkan string koneksi dan U R L

Membuat tabel identitas ASP.NET dalam database MySQL

Instal alat MySQL Workbench untuk menyambungkan dan mengelola database MySQL

  1. Instal alat MySQL Workbench dari halaman unduhan MySQL
  2. 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.
  3. Setelah membuat koneksi, buka tab Kueri baru; tempelkan perintah dari MySQLIdentity.sql ke dalam kueri dan jalankan untuk membuat tabel database.
  4. 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.
    Gambar memperlihatkan tabel identitas yang diperlukan

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

  1. Telusuri ke URL repositori di AspNet.Identity.MySQL (GitHub).
  2. Unduh kode sumber.
  3. Ekstrak file .zip ke dalam folder lokal.
  4. Buka solusi AspNet.Identity.MySQL dan bangun.

Membuat proyek aplikasi MVC baru dari templat

  1. Klik kanan solusi AspNet.Identity.MySQL dan Tambahkan, Proyek Baru

  2. 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.

    Gambar jendela dialog tambahkan proyek baru

  3. Dalam dialog Proyek ASP.NET Baru , pilih templat MVC dengan opsi default (yang menyertakan Akun Pengguna Individu sebagai metode autentikasi) dan klik OK. Gambar jendela dialog proyek A S P dot N E T baru

  4. 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.

  5. Klik kanan proyek IdentityMySQLDemo, pilih Tambahkan, Referensi, Solusi, Proyek; pilih proyek AspNet.Identity.MySQL dan klik OK.

  6. Dalam proyek IdentityMySQLDemo, ganti semua referensi ke
    using Microsoft.AspNet.Identity.EntityFramework;
    dengan
    using AspNet.Identity.MySQL;

  7. 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");
        }
    }
    
  8. 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));
    
  9. 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

  1. Klik kanan proyek IdentityMySQLDemo dan pilih Atur sebagai Proyek Startup

  2. Tekan Ctrl + F5 untuk membuat dan menjalankan aplikasi.

  3. Klik tab Daftar di bagian atas halaman.

  4. Masukkan nama pengguna dan kata sandi baru lalu klik Daftar.

    Gambar memperlihatkan nama pengguna dan kata sandi baru

  5. Pengguna baru sekarang terdaftar dan masuk.

    Ilustrasi yang menunjukkan pengguna baru terdaftar dan masuk

  6. Kembali ke alat MySQL Workbench dan periksa konten tabel IdentityMySQLDatabase . Periksa tabel pengguna untuk entri saat Anda mendaftarkan pengguna baru.

    Gambar alat inspeksi My S Q L Workbench

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.