Saya telah melihat banyak halaman serupa di web, tetapi kebanyakan dari mereka menggunakan proyek baru, bukan yang sudah ada, atau tidak memiliki fitur yang diperlukan. Jadi, saya memiliki MVC 5
proyek yang sudah ada dan ingin mengintegrasikan ASP.NET MVC5 Identity dengan fitur login, konfirmasi email dan pengaturan ulang kata sandi .
Selain itu, saya juga perlu membuat semua tabel yang diperlukan pada basis data yaitu Pengguna, Peran, grup, dll. (Saya menggunakan Kode EF Pertama dalam proyek saya). Apakah ada artikel atau sampel yang sesuai dengan kebutuhan ini? Setiap saran akan dihargai. Terima kasih sebelumnya...
asp.net
asp.net-mvc
authentication
asp.net-identity
owin
Mendongkrak
sumber
sumber
Jawaban:
Mengkonfigurasi Identitas ke proyek Anda saat ini bukanlah hal yang sulit. Anda harus menginstal beberapa paket NuGet dan melakukan beberapa konfigurasi kecil.
Pertama instal paket-paket NuGet ini dengan Package Manager Console:
Tambahkan kelas pengguna dan dengan
IdentityUser
warisan:Lakukan hal yang sama untuk peran:
Ubah
DbContext
orang tua AndaDbContext
menjadiIdentityDbContext<AppUser>
seperti ini:Jika Anda menggunakan string koneksi yang sama dan migrasi yang diaktifkan, EF akan membuat tabel yang diperlukan untuk Anda.
Secara opsional, Anda dapat memperluas
UserManager
untuk menambahkan konfigurasi dan kustomisasi yang Anda inginkan:Karena Identity didasarkan pada OWIN, Anda perlu mengonfigurasi OWIN juga:
Tambahkan kelas ke
App_Start
folder (atau tempat lain jika Anda mau). Kelas ini digunakan oleh OWIN. Ini akan menjadi kelas startup Anda.Hampir selesai, tambahkan saja baris kode ini ke
web.config
file Anda sehingga OWIN dapat menemukan kelas startup Anda.Sekarang di seluruh proyek Anda bisa menggunakan Identity sama seperti proyek baru yang sudah diinstal oleh VS. Pertimbangkan tindakan masuk sebagai contoh
Anda bisa membuat peran dan menambahkan ke pengguna Anda:
Anda juga bisa menambahkan peran ke pengguna, seperti ini:
Dengan menggunakan
Authorize
Anda dapat menjaga tindakan atau pengendali Anda:atau
Anda juga dapat menginstal paket tambahan dan mengkonfigurasinya untuk memenuhi kebutuhan Anda seperti
Microsoft.Owin.Security.Facebook
atau yang Anda inginkan.Catatan: Jangan lupa untuk menambahkan spasi nama yang relevan ke file Anda:
Anda juga dapat melihat jawaban saya yang lain seperti ini dan ini untuk penggunaan Identitas tingkat lanjut.
sumber
AppRole
dan role manager Identity untuk mengklasifikasikan pengguna. Dan sejakRole
s danRoleManager
sudah diterapkan oleh Identity sendiri Anda tidak perlu menulis ulang kode yang sudah diterapkan. Saya akan memperbarui pos untuk menunjukkan kepada Anda bagaimana Anda dapat menggunakan peran. Dan seperti yang saya katakan sebelumnya, Anda hanya perlu menambahkanAppUser
danAppRole
entitas untuk menginisialisasi Identity. Dengan mewarisi AndaDbContext
dariIdentityDbContext<AppUser>
semua tabel yang diperlukan tambahkan tabel Anda. Anda tidak perlu melakukan apa pun cukup aktifkan migrasi.Microsoft.AspNet.Identity.EntityFramework
ke Domain Anda dan lainnya untuk UI.web.config
. Jangan ganti yang lama. Baca ini untuk info lebih lanjut . Saya pikir MVC Anda juga ditingkatkan.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
danAspNetUsers
Inilah yang saya lakukan untuk mengintegrasikan Identity dengan database yang ada.
Buat proyek MVC sampel dengan template MVC. Ini memiliki semua kode yang diperlukan untuk implementasi Identitas - Startup.Auth.cs, IdentityConfig.cs, kode Pengontrol Akun, Kelola Pengontrol, Model dan tampilan terkait.
Instal paket nuget yang diperlukan untuk Identity dan OWIN. Anda akan mendapatkan ide dengan melihat referensi di Proyek sampel dan jawabannya oleh @Sam
Salin semua kode ini ke proyek Anda yang ada. Harap dicatat jangan lupa untuk menambahkan string koneksi "DefaultConnection" untuk Identity untuk dipetakan ke database Anda. Silakan periksa kelas ApplicationDBContext di IdentityModel.cs di mana Anda akan menemukan referensi ke string koneksi "DefaultConnection".
Ini adalah skrip SQL yang saya jalankan pada basis data yang ada untuk membuat tabel yang diperlukan:
Periksa dan selesaikan kesalahan yang tersisa dan Anda selesai. Identitas akan menangani sisanya :)
sumber
Saya merekomendasikan IdentityServer . Ini adalah proyek .NET Foundation dan mencakup banyak masalah tentang otentikasi dan otorisasi.
Gambaran
IdentityServer adalah kerangka kerja .NET / Katana dan komponen yang dapat di-host yang memungkinkan penerapan sistem akses tunggal dan akses untuk aplikasi web modern dan API menggunakan protokol seperti OpenID Connect dan OAuth2. Ini mendukung berbagai klien seperti ponsel, web, SPA dan aplikasi desktop dan dapat diperpanjang untuk memungkinkan integrasi dalam arsitektur baru dan yang sudah ada.
Untuk informasi lebih lanjut, mis
lihat dokumentasi dan demo .
sumber