Hệ thống RBAC (Role-Based Access Control) động cho phép quản lý quyền người dùng một cách linh hoạt, có thể mở rộng theo Module → Subsystem → Function → Command mà không cần hard-code trong code.
Quyền được lưu trong DB, admin có thể thêm mới hoặc chỉnh sửa trực tiếp mà không phải build lại ứng dụng.
Trong hệ thống lớn (ERP, HRM, CRM…), số lượng chức năng và hành động rất nhiều.
RBAC động giúp:
- Tách rời phần định nghĩa quyền khỏi source code.
- Cho phép thêm mới Function, Command, Permission mà không cần build lại.
- Hỗ trợ đa chi nhánh (Branch).
- Vẫn tương thích với ASP.NET Identity.
-
Xác thực (Authentication)
Người dùng đăng nhập quaUser (IdentityUser<Guid>)
. -
Phân quyền (Authorization)
Khi người dùng gọi API hoặc truy cập UI:- Hệ thống lấy danh sách Permission từ:
- Quyền trực tiếp (
UserPermission
) - Quyền theo nhóm (
UserPermissionGroup
)
- Quyền trực tiếp (
- Kiểm tra xem user có quyền với Function + Command trong Branch hay không.
- Hệ thống lấy danh sách Permission từ:
-
Quản trị động
- Có thể thêm mới
Subsystem
,Module
,Function
,Command
mà không cần sửa code. - Admin chỉ cần định nghĩa
Permission
và gán choPermissionGroup
hoặcUser
.
- Có thể thêm mới
- Subsystem: Kế toán
- Module: Quản lý hóa đơn
- Function: Danh sách hóa đơn (
FunctionCode = InvoiceList
) - Command: View, Create, Delete
- PermissionGroup: "Nhân viên kế toán" có quyền
View
,Create
- User A thuộc chi nhánh Hà Nội, nằm trong nhóm "Nhân viên kế toán"
👉 Khi User A đăng nhập tại chi nhánh Hà Nội:
- ✅ Có thể xem và tạo mới hóa đơn
- ❌ Không thể xóa hóa đơn
- Linh hoạt: Không cần hard-code quyền.
- Quản trị động: Admin quản lý trực tiếp từ DB/UI.
- Đa chi nhánh: Hỗ trợ quyền tách biệt theo chi nhánh.
- Tích hợp sẵn Identity: Sử dụng ASP.NET Identity cho xác thực, RBAC cho phân quyền chi tiết.