Authentication

Install dulu aspnet-code-generator

dotnet tool install -g dotnet-aspnet-codegenerator

Lalu install semua package yang dibutuhkan

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
dotnet add package Microsoft.AspNetCore.Identity.UI
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools

hasilnya akan menjadi seperti ini: klik disini

Setelah itu, ubah model User kalian:

  • Tambahkan using Microsoft.AspNetCore.Identity

  • Turunkan model User kalian dari base class IdentityUser

  • Hapus field Id dari model User

  • Hapus field Email,Username,Password atau sejenisnya jika ada

Hasilnya menjadi: klik disini

Setelah mengubah model user, ubah juga DbContext mu, dari yang awalnya:

    public class NamaDbContext : DbContext

menjadi (dimana User adalah model User mu):

jangan lupa juga menambahkan using directives:

dan menghapus baris DbSet<User> Users

Hasil: klik disini

Jika sudah, ketahui dulu full name dari data context dan model user mu, fullname adalah Namespace+Nama class, jadi jika nama class dbcontextnya adalah TodoContext dan namespace nya TodoNetExample.Data maka fullname nya adalah TodoNetExample.Data.TodoContext, model juga sama.

Jika sudah mengetahui fullname dbcontext dan user model, lakukan scaffolding dengan cara (ganti fullnamedbcontext dan usermodel dengan yang sudah diketahui tadi):

Lakukan migrasi dan update:

Tambahkan

di method Configure di file Startup.cs link github, dan di file yang sama, pada method ConfigureServices, tambahkan

link github

Lalu pada file Views/Shared/_Layout.cshtml, tambahkan

link github

Untuk mengakses user yang saat ini sudah login, pertama tambahkan instance variable dengan tipe UserManager<User> dimana User adalah nama modelmu

Lalu untuk mengambil data user:

Untuk membatasi akses user (harus login), tambahkan atribut [Authorize] diatas deklarasi controller, jika ingin seluruh controller di restrict, atau pada beberapa method saja:

Last updated