後台管理系統本質是基於角色的訪問控制 (RBAC) 應用。核心實體:用戶、角色、權限、菜單、日誌。遵循「高內聚、低耦合」,採用分層架構(UI → BLL → DAL → DB)。
CREATE TABLE Sys_User (
UserID INT PRIMARY KEY IDENTITY,
UserName NVARCHAR(50) NOT NULL UNIQUE,
PasswordHash NVARCHAR(256) NOT NULL, -- 存儲加密後的密碼
Email NVARCHAR(100),
Phone NVARCHAR(20),
RealName NVARCHAR(50),
IsAdmin BIT DEFAULT 0, -- 是否超級管理員
IsDeleted BIT DEFAULT 0, -- 軟刪除標記
CreateTime DATETIME DEFAULT GETDATE(),
LastLoginTime DATETIME
);
CREATE TABLE Sys_Role (
RoleID INT PRIMARY KEY IDENTITY,
RoleName NVARCHAR(50) NOT NULL UNIQUE,
Description NVARCHAR(200),
IsSystem BIT DEFAULT 0 -- 系統內置角色不可刪除
);
CREATE TABLE Sys_Menu (
MenuID INT PRIMARY KEY IDENTITY,
ParentID INT DEFAULT 0, -- 0 為頂級菜單
Title NVARCHAR(50) NOT NULL,
Url NVARCHAR(200), -- 前端路由路徑
Icon NVARCHAR(50), -- 圖標 class
SortOrder INT DEFAULT 0,
IsVisible BIT DEFAULT 1,
PermissionCode NVARCHAR(50) -- 權限標識,如 "user:list"
);
CREATE TABLE Sys_User_Role (
UserID INT NOT NULL,
RoleID INT NOT NULL,
PRIMARY KEY (UserID, RoleID),
FOREIGN KEY (UserID) REFERENCES Sys_User(UserID),
FOREIGN KEY (RoleID) REFERENCES Sys_Role(RoleID)
);
CREATE TABLE Sys_Role_Menu (
RoleID INT NOT NULL,
MenuID INT NOT NULL,
PRIMARY KEY (RoleID, MenuID),
FOREIGN KEY (RoleID) REFERENCES Sys_Role(RoleID),
FOREIGN KEY (MenuID) REFERENCES Sys_Menu(MenuID)
);
CREATE TABLE Sys_LoginLog (
LogID BIGINT PRIMARY KEY IDENTITY,
UserID INT NOT NULL,
LoginTime DATETIME DEFAULT GETDATE(),
IPAddress NVARCHAR(50),
UserAgent NVARCHAR(500),
IsSuccess BIT,
FailReason NVARCHAR(200)
);
推薦使用代碼生成器(如 CodeSmith、MyGeneration、ASP.NET Boilerplate (ABP)、Furion 模板)根據上述表結構一鍵生成 DAL/BLL/Controller/View 代碼,專注業務邏輯開發。
後台管理系統設計的核心在於RBAC 權限模型落地。從用戶、角色、菜單三張核心表及其關聯表入手,配合分層架構、現代前端框架、安全最佳實踐,即可構建靈活、安全、可維護的後台系統。切勿過度設計,先跑通最小閉環再迭代擴展。