grocery แบบ mvc step#2 Adding Authentication

Adding Authentication to ASP.NET Core

> dotnet add package JWT
> dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
> dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

Configuring JWT Properties

appsettings.json

สร้างไฟล์ JWTSettings.cs ไว้ที่ root directory

JWTSettings.cs

Startup.cs

Enabling User Registration

สร้างไฟล์ Controllers/AccountController.cs

สร้างไฟล์ Models/Credentials.cs

Models/Credentials.cs

สร้างไฟล์ Data/UserDbContext.cs

Data/UserDbContext.cs

Startup.cs

Perform migration

ใช้คำสั่งนี้จะ Eror แบบนี้ เป็นเพราะมี DbContext มากกว่าหนึ่ง

> dotnet ef migrations add "Config JWT"
More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerShell commands and th
e '--context' parameter for dotnet commands.

ดังนั้นให้ระบุ DbContext ไปเลยว่าใช้ตัวไหน

> dotnet ef migrations add "Config JWT" --context UserDbContext
> dotnet ef database update --context UserDbContext

รัน F5

> dotnet run

Register ผู้ใช้งาน

ใช้ Postman ทำการ POST ไปที่
https://localhost:5001/api/account
พารามิเตอร์ส่งใน body เป็น

{
    "email": "mr.phaisarn@gmail.com",
    "password": "123456#User"
}

จะได้

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJtci5waGFpc2FybkBnbWFpbC5jb20iLCJlbWFpbCI6Im1yLnBoYWlzYXJuQGdtYWlsLmNvbSIsImlzcyI6ImRvdG5ldF9ncm9jZXJ5X2xpc3QiLCJhdWQiOiJHcm9jZXJ5TGlzdEFQSSIsIm5iZiI6MTUzOTc4Nzg4Mi4wLCJpYXQiOjE1Mzk3ODc4ODIuMCwiZXhwIjoxNTQwMzkyNjgyLjB9.Ssw96pKsqgUZB7Ay75mx60jYdFku_MvCDyha136gdgU",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6ImFjZWE1NWRiLWE5MmQtNGM5Ni1iNGEwLTA0NDE2YWU2NGMxYyIsInN1YiI6Im1yLnBoYWlzYXJuQGdtYWlsLmNvbSIsImVtYWlsIjoibXIucGhhaXNhcm5AZ21haWwuY29tIiwiZW1haWxDb25maXJtZWQiOmZhbHNlLCJpc3MiOiJkb3RuZXRfZ3JvY2VyeV9saXN0IiwiYXVkIjoiR3JvY2VyeUxpc3RBUEkiLCJuYmYiOjE1Mzk3ODc4ODIuMCwiaWF0IjoxNTM5Nzg3ODgyLjAsImV4cCI6MTU0MDM5MjY4Mi4wfQ._fIqx3oDpHy6KKKk-CVez9vBzXO2TClaZK1sXEFA-rE"
}