Sử dụng Token với Swagger UI (SwashBuckler)

Trong bài viết này, mình sẽ hướng dẫn các bạn thêm hàm đăng nhập (operation) /token và cách đính kèm token trong mỗi request từ Swagger.
Nếu bạn chưa biết cách sử dụng Swagger, bạn tham khảo thêm bài viết: Thêm Swagger vào Web API

Thêm 1 operation token vào document

Mặc định hàm đăng nhập để lấy token sẽ không được hiển thị trong Swagger. Nếu muốn hiển thị hàm đăng nhập, bạn phải tùy chỉnh IDocumentFilter.
Interface IDocumentFilter được định nghĩa như sau:
public interface IDocumentFilter
{
 void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer);
}


Moving ASP.NET Identity model to class library

To move the IdentityModel into a class library (which is the right thing to do according to the SRP), follow these steps:
  1. Create a class library. (ClassLibrary1)
  2. Using NuGet, add a reference to Microsoft.AspNet.Identity.EntityFramework. This will also auto-add some other references.
  3. Add a reference in your website to ClassLibrary1
  4. Find WebSite/Models/IdentityModel.cs and move it to ClassLibrary1.
  5. Make IdentityModel.cs look like this:
    public class ApplicationUser : IdentityUser
    {
    }
    
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("YourContextName")
        {
        }
    }
  6. Make sure your website's Web.config has YourContextName pointing to the right database in the section. (Note: this database can and should house your application data).
    <add name="YourContextName" connectionString="YourConnectionStringGoesHere"
      providerName="System.Data.SqlClient" />
  7. Make your EF Context class inherit from your ApplicationDbContext:
    public class YourContextName : ApplicationDbContext
    {
        public DbSet<ABizClass1> BizClass1 { get; set; }
        public DbSet<ABizClass2> BizClass2 { get; set; }
        // And so forth ...
    }
When anyone in your site tries to log in or register, the Identity system will route them to your database with all your data which includes the Identity tables.
Good to go!

Thêm Swagger vào Project Web API

ASP.NET Web API Help Page

Khi tạo project Web API, sẽ có 1 nuget tên là Microsoft ASP.NET Web Api Help Page được cài đặt để tạo trang Help cho Web API.

Gởi email với MailGun

Mailgun cho phép gửi 10.000 free email mỗi tháng, với điều kiện là bạn phải xác nhận tên miền.
Với account miễn phí, bạn chỉ có thể gởi được 100 email trong 1 giờ. Mình nghĩ như vậy là đủ để test website ở localhost rồi.
Một dịch vụ nổi tiếng hơn là SendGrid, cho phép gởi 40k email mỗi tháng với account miễn phí. Tuy nhiên chỉ được dùng thử 1 tháng.
SendInBlue là 1 một dịch vụ đáng thử, tuy nhiên việc xác nhận rất khó khăn. Mình đợi cả ngày rồi mà nó không thể gởi mã code xác nhận qua điện thoại.
Bạn có thể tham khảo nhiều dịch vụ gởi email khác ở đây: https://canhme.com/kinh-nghiem/smtp-server-mien-phi/

Authentication and Authorize in Web API 2

Trong bài viết này, chúng ta sẽ cài đặt và sử dụng Identity cho dự án Web API. Bên cạnh đó, chúng ta sẽ sử dụng Entity Framework Migrations để quản lý phiên bản và thiết lập dữ liệu ban đầu cho database

iTextSharp: Làm việc với Font

Trong phần này, mình sẽ hướng dẫn bạn cách sử dụng Font để tạo tài liệu PDF
Phần 1: Hướng dẫn sử dụng iTextSharp
iText chỉ hỗ trợ Standard Type 1 fonts, gồm 14 fonts: Courier, Courier Bold, Courier Italic, Courier Bold and Italic, Helvetica, Helvetica Bold, Helvetica Italic, Helvetica Bold and Italic, Times Roman, Times Roman Bold, Times Roman Italic, Times Roman Bold and Italic, Symbol, ZapfDingBats®
Font mặc định là Helvetica, 12pt, black, normal.