Chuyển đến nội dung chính

Bài đăng

Control Flow Graph (CFG)

Định nghĩa Trong khoa học máy tính, luồng điều khiển (tiếng Anh: control flow hay flow of control) là thứ tự các câu lệnh, tập lệnh hay lời gọi hàm riêng biệt của một chương trình mệnh lệnh được thực thi hay đánh giá. Việc nhấn mạnh vào kiểm soát dòng một cách rõ ràng sẽ phân biệt một ngôn ngữ lập trình mệnh lệnh (imperative programming) với ngôn ngữ lập trình khai báo (declarative programming). Trong một ngôn ngữ lập trình bắt buộc, một câu lệnh điều khiển luồng là một câu lệnh thực thi mà kết quả trong một sự lựa chọn được thực hiện theo cách của hai hoặc nhiều đường dẫn tiếp theo. Đối với ngôn ngữ lập trình không nghiêm ngặt các ngôn ngữ chức năng, các hàm và cấu trúc ngôn ngữ tồn tại để đạt được cùng một kết quả, nhưng chúng thường không được gọi là các câu lệnh luồng điều khiển. Một tập hợp các câu lệnh lần lượt thường được cấu trúc như một Block, ngoài việc nhóm, cũng định nghĩa phạm vi từ vựng. Ngắt và tín hiệu là các cơ chế cấp thấp có thể thay đổi dòng điều khiển theo cách tươ...

ASP.NET Core User Secrets và Secret Manager Tool

Khi bạn phát triển website sử dụng ASP.NET Core, bạn thường lưu connection string, api key, password, và một vài thông tin nhạy cảm khác. Việc bạn đưa thông tin nhạy cảm lên Github, Gitlab, ... sẽ gây ra nhiều vẫn đề. Để giải quyết vấn đề đó, Microsoft đã đưa ra công cụ User Secrets (hoặc Secret Manager) để lưu trữ sensitive data vào tập tin secrets.json. Cài đặt Giả sử appsettings.json có nội dung như sau: { "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=sa;Password=NoPassword;TrustServerCertificate=True;MultipleActiveResultSets=False;Connection Timeout=30;" } } Để ghi đè ConnectionStrings:localhost trên từng máy cá nhân, các bạn sẽ phải thêm user-secret có cùng tên. Có 2 cách để ...

ASP.NET Identity: Thêm Login và Register page - Part 2

Trong bài viết này, mình sẽ hướng dẫn các bạn setup Login, Register và Logout page. Để dễ dàng tiếp cận, mình sẽ chia ra làm 3 phần: Setup Login, Register Model và View Setup AspNet Identity Implement Login và Register logic Setup Model và View Register page Tạo Register model public class RegisterModel { public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } [DataType(DataType.Password)] public string Password { get; set; } [DataType(DataType.Password)] public string ConfirmPassword { get; set; } public string ReturnUrl { get; set; } } Register.cshtml @model ClaimExample.Models.RegisterModel; <div class="row"> <div class="col-md-4"> <form asp-route-returnUrl="ReturnUrl" method="post"> <h4>Create a new account.</h4> <hr /> <div asp-validation-summary="All" class="text-danger"...

ASP.NET Identity: Claim, Identity, Principle - Part 1

Authentication và Authorization luôn là chủ đề mà mình muốn tìm hiểu từ lâu. Trước kia mình thường dựa trên thư viện có sẵn, nhưng nay thử tìm hiểu xem cơ chế hoạt động của các thư viện ra sao. Ngoài ra, một phần là mình thất vọng về việc IdentityServer đã chuyển đổi lience từ OpenSource sang Commercial. Trong tương lai, có thể mình sẽ tìm hiểu thêm một vài thư viện khác để bổ sung cho phần Membership trong ASP.NET Core Hiện tại có một số thư viện mà mình quan tâm: Auth0 , Okta, Keycloak , Azure Active Directory B2C. Tạo Project ASP.NET Core Tạo Project ASP.NET Core (Model-View-Controller). Ở option ASP.NET Identity, bạn chọn No Authentication . Để thêm Authentication và Authorization, bạn cần qua các bước sau: Thêm thuộc tính [Authorize], chỉ thị này áp dụng được cho Controller, Action của Controller, được dùng để xác định ai được quyền truy cập Controller, Action của Controller. Setup Authentication và Authorization trong Startup của application Tạo trang Login page và xử lý data ...

Sử dụng in-memory database trong Entity Framework

Entity Framework Core cho phép bạn lưu trữ và truy xuất dữ liệu đến và từ cơ sở dữ liệu sử dụng bộ nhớ chính của máy tính để lưu trữ (in-memory database). Đây là một cách nhanh chóng và dễ dàng để kiểm tra các ứng dụng web ASP.NET Core 7. Có nhiều lý do tại sao bạn có thể muốn sử dụng in-memory database. Giả sử bạn đang phát triển một tính năng mới và muốn thử nghiệm tính năng đó mà không ảnh hưởng đến database của mình. Hoặc đơn giản là bạn muốn viết ví dụ và không cần phải xóa database vừa tạo. Ý tưởng Có quá nhiều thứ để implement, nào là Repository, nào là EF Core, rồi thêm Swagger nữa. Để bắt đầu đơn giản nhất, chúng ta sẽ lần lượt thực hiện các bước sau: Tạo Model class: Author và Book 2 model này đại diện cho 2 entity mà chúng ta sẽ khai báo trong Entity Framework Cài đặt package EF Core InMemory NuGet. Tạo DbContext class Khai báo Repository class: IAuthorRepository và AuthorRepository Khai báo Dependency Injection Cài đặt và khai báo Swagger Khai báo Controller   Khai báo ...