欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實戰(zhàn)洞察。

Winform用戶權(quán)限模塊設(shè)計:RBAC模型與Dapper實踐

Winform用戶權(quán)限模塊設(shè)計:RBAC模型與Dapper實踐 簡介面向C# Winform開發(fā)者的用戶管理功能完整示例以MySQL為數(shù)據(jù)底座覆蓋用戶創(chuàng)建、角色創(chuàng)建、用戶日志記錄、操作權(quán)限設(shè)置四大模塊適合課程設(shè)計或企業(yè)后臺賬號體系開發(fā)時初學(xué)與參考。壓縮包共49個文件、約957KB以.cs源碼、.resx窗體資源、.sln/.csproj項目配置為主體另附可運(yùn)行exe、依賴dll以及.sql數(shù)據(jù)庫腳本打開解決方案即可運(yùn)行調(diào)試適合通過實例理解項目結(jié)構(gòu)。工程內(nèi)包含DalMySQL、DbExtension、Bll等分層數(shù)據(jù)訪問與業(yè)務(wù)處理代碼以及用戶注冊、登錄、角色分配、權(quán)限校驗、日志記錄等窗體邏輯數(shù)據(jù)庫腳本提供用戶表、角色表、權(quán)限表及關(guān)聯(lián)表的建表語句可直觀學(xué)習(xí)ADO.NET連接MySQL、密碼加密存儲、RBAC權(quán)限檢查等落地寫法。已有374人學(xué)習(xí)下載對想快速掌握WinformMySQL用戶權(quán)限管理寫法的開發(fā)者具有較高參考價值也可為后續(xù)擴(kuò)展操作審計、菜單權(quán)限等功能提供基礎(chǔ)。1. 用戶模塊看著簡單為什么Winform項目里最容易返工做過內(nèi)部管理系統(tǒng)、MES上位機(jī)的Winform開發(fā)者應(yīng)該都有同感用戶創(chuàng)建、角色分配、操作權(quán)限設(shè)置這些功能單看每個都不難但湊到一起就成了返工重災(zāi)區(qū)。原因在于需求總在變——上線第一版只要一個登錄框第二版客戶就要分管理員和操作員第三版又要求“操作員不能導(dǎo)出數(shù)據(jù)”“這個按鈕只有主管能點”這時候才發(fā)現(xiàn)權(quán)限判斷早散落在每個按鈕的點擊事件里改一處漏三處。這篇筆記就是圍繞C# Winform里的用戶、角色、日志、操作權(quán)限這套完整模塊講怎么用數(shù)據(jù)庫把模型一次搭對再用Dapper把用戶創(chuàng)建、角色綁定、權(quán)限加載、日志記錄串成一條可靠鏈路。適合正在做Winform項目案例、準(zhǔn)備給系統(tǒng)加賬號體系的開發(fā)者也適合給學(xué)校數(shù)據(jù)庫課程設(shè)計做參考。2. 先定數(shù)據(jù)模型用戶、角色、權(quán)限、日志五張表怎么設(shè)計2.1 五張表的分工為什么用戶不直接掛權(quán)限常見做法是采用RBAC模型用戶不直接和權(quán)限掛鉤而是通過“用戶-角色-權(quán)限”三層結(jié)構(gòu)來管理。這樣設(shè)計的直接好處是給三個新用戶分配權(quán)限時不用分別勾選十幾個權(quán)限項只要把他們都掛到“操作員”角色上即可。角色是權(quán)限的集合用戶是角色的成員權(quán)限變更只需要動角色。整個模塊需要五張核心表SysUser用戶表存賬號、密碼哈希、鹽、狀態(tài)、創(chuàng)建時間、最后登錄時間。SysRole角色表存角色名、角色編碼、備注。SysUserRole用戶和角色的關(guān)聯(lián)表一個用戶掛多個角色一個角色被多個用戶使用。SysPermission權(quán)限表存權(quán)限編碼、權(quán)限名稱、所屬分組。SysRolePermission角色和權(quán)限的關(guān)聯(lián)表決定“這個角色能做什么”。再加上一張SysLog日志表記錄誰在什么時間做了什么操作。六張表構(gòu)成了整個權(quán)限體系的地基。我見過有人圖省事在用戶表里加一個“權(quán)限字符串”字段把權(quán)限寫成“1,3,8,12”也有人用一張用戶表外加一張日志表就開工。短期跑得通一旦出現(xiàn)“所有主管都要增加導(dǎo)出數(shù)據(jù)權(quán)限”這種需求用角色表只需要改一處角色權(quán)限關(guān)聯(lián)用權(quán)限字符串就得逐個用戶改過去改完還得擔(dān)心誰漏了。所以在這個標(biāo)題的場景下五張表再加一張日志表是性價比最高的結(jié)構(gòu)。2.2 建庫腳本和初始化數(shù)據(jù)角色、權(quán)限碼一次配齊以SQL Server為例建表腳本如下。如果項目用MySQL把IDENTITY換成AUTO_INCREMENT、GETDATE換成NOW、NVARCHAR換成VARCHAR即可邏輯不變。CREATE TABLE SysUser ( UserId INT IDENTITY(1,1) PRIMARY KEY, UserName NVARCHAR(50) NOT NULL, PasswordHash NVARCHAR(128) NOT NULL, Salt NVARCHAR(32) NOT NULL, DisplayName NVARCHAR(50) NULL, IsEnabled BIT NOT NULL DEFAULT 1, CreateTime DATETIME NOT NULL DEFAULT GETDATE(), LastLoginTime DATETIME NULL ); CREATE TABLE SysRole ( RoleId INT IDENTITY(1,1) PRIMARY KEY, RoleName NVARCHAR(50) NOT NULL, RoleCode NVARCHAR(50) NOT NULL ); CREATE TABLE SysUserRole ( UserId INT NOT NULL, RoleId INT NOT NULL ); CREATE TABLE SysPermission ( PermissionId INT IDENTITY(1,1) PRIMARY KEY, PermissionCode NVARCHAR(50) NOT NULL, PermissionName NVARCHAR(50) NOT NULL, Category NVARCHAR(50) NULL ); CREATE TABLE SysRolePermission ( RoleId INT NOT NULL, PermissionId INT NOT NULL ); CREATE TABLE SysLog ( LogId BIGINT IDENTITY(1,1) PRIMARY KEY, UserId INT NULL, UserName NVARCHAR(50) NULL, ActionType NVARCHAR(50) NULL, Detail NVARCHAR(500) NULL, IpAddress NVARCHAR(50) NULL, CreateTime DATETIME NOT NULL DEFAULT GETDATE() );權(quán)限表里用PermissionCode作為業(yè)務(wù)判斷依據(jù)是個關(guān)鍵設(shè)計。比如“UserManage”“RoleManage”“DataImport”“DataExport”這些編碼在C#代碼里以字符串常量存在權(quán)限判斷時比較的是可讀的編碼而不是數(shù)字ID。這樣看代碼能看到含義排查問題時也能直接對上號。初始化數(shù)據(jù)時把管理員角色和常用權(quán)限一次性寫入INSERT INTO SysRole (RoleName, RoleCode) VALUES (N管理員, NAdmin); INSERT INTO SysRole (RoleName, RoleCode) VALUES (N操作員, NOperator); INSERT INTO SysPermission (PermissionCode, PermissionName, Category) VALUES (NUserManage, N用戶管理, N系統(tǒng)管理), (NRoleManage, N角色管理, N系統(tǒng)管理), (NDataImport, N數(shù)據(jù)導(dǎo)入, N業(yè)務(wù)操作), (NDataExport, N數(shù)據(jù)導(dǎo)出, N業(yè)務(wù)操作), (NLogView, N日志查看, N系統(tǒng)管理); -- 管理員擁有全部權(quán)限 INSERT INTO SysRolePermission (RoleId, PermissionId) SELECT 1, PermissionId FROM SysPermission; -- 操作員只擁有數(shù)據(jù)導(dǎo)入和導(dǎo)出 INSERT INTO SysRolePermission (RoleId, PermissionId) SELECT 2, PermissionId FROM SysPermission WHERE PermissionCode IN (NDataImport, NDataExport);這段腳本有兩個取舍要說明。第一沒有給關(guān)聯(lián)表設(shè)置物理外鍵只靠程序保證數(shù)據(jù)完整性。Winform內(nèi)部系統(tǒng)一般并發(fā)不高去掉物理外鍵可以避免刪除角色時被外鍵攔住、操作順序受限。如果團(tuán)隊規(guī)范允許可以加上外鍵求穩(wěn)。第二權(quán)限碼用NVARCHAR而非整數(shù)ID是我做權(quán)限系統(tǒng)的習(xí)慣具體原因在4.3節(jié)展開。2.3 索引與連接串SQL Server、MySQL、SQLite怎么快速切換表建好后索引是登錄查詢快不快的前提。實際工作中最需要保證的是三條SysUser.UserName唯一索引登錄時按用戶名查用戶SysUserRole.RoleId索引加載用戶角色時按用戶ID反查SysRolePermission.RoleId索引加載角色權(quán)限時聯(lián)動查詢。CREATE UNIQUE INDEX UX_SysUser_UserName ON SysUser(UserName); CREATE INDEX IX_SysUserRole_RoleId ON SysUserRole(RoleId); CREATE INDEX IX_SysRolePermission_RoleId ON SysRolePermission(RoleId);數(shù)據(jù)庫的選型會影響連接串和分頁寫法但表結(jié)構(gòu)可以保持一致。開發(fā)階段我用SQLite或LocalDB提速部署時再切到SQL Server連接串可以用配置項區(qū)分。SqlConnection本身就帶連接池程序里每次new出來的連接關(guān)閉后回到池里復(fù)用不要在循環(huán)里頻繁打開關(guān)閉同一個連接否則連接池耗盡后會出現(xiàn)“連接超時”的玄學(xué)問題。這是Winform連數(shù)據(jù)庫最常見的隱性坑后面避坑章再細(xì)說。3. 用戶創(chuàng)建與角色分配用Dapper把新增和授權(quán)寫進(jìn)一個事務(wù)3.1 用戶創(chuàng)建窗口從界面到數(shù)據(jù)庫的完整鏈路用戶創(chuàng)建的需求拆開看只有兩步往SysUser插一條用戶記錄往SysUserRole插若干條關(guān)聯(lián)記錄。但“若干條”和“一條”必須同時成功或同時失敗。比如創(chuàng)建用戶成功、分配角色失敗程序里會出現(xiàn)一個沒有角色的賬號登錄后什么都做不了這種數(shù)據(jù)在排錯時極難發(fā)現(xiàn)。常見做法是在新增用戶窗體里上方放用戶名、密碼、確認(rèn)密碼、顯示名下方放一個CheckedListBox展示所有角色點擊保存后一次提交。界面布局不是重點重點是數(shù)據(jù)鏈路。我一般用Dapper替代原來的DataSet和SqlCommand手寫參數(shù)原因很實際Dapper擴(kuò)展方法簡單SQL可控性能開銷極小團(tuán)隊里任何人接手都能看懂。密碼不能明文入庫入庫的是“鹽”和“哈希值”。鹽是每次生成的一串隨機(jī)字節(jié)轉(zhuǎn)Hex哈希用PBKDF2或SHA256計算。注意一件事同一個用戶登錄時必須用同一個鹽去重新計算哈希所以鹽必須單獨(dú)存一列不能只存一個哈希值。3.2 用Dapper把用戶和角色寫進(jìn)同一個事務(wù)下面是核心代碼。為了聚焦業(yè)務(wù)邏輯省略了控件取值部分但從方法簽名能看出入?yún)⒑统鰠?。public bool CreateUserWithRoles(string userName, string password, string displayName, Listint roleIds) { // 1. 生成鹽和密碼哈希 string salt PasswordHelper.GenerateSalt(); string passwordHash PasswordHelper.HashPassword(password, salt); // 2. 插入用戶拿到自增主鍵 const string sqlUser INSERT INTO SysUser (UserName, PasswordHash, Salt, DisplayName, IsEnabled, CreateTime) VALUES (UserName, PasswordHash, Salt, DisplayName, 1, GETDATE()); SELECT CAST(SCOPE_IDENTITY() AS INT);; // 3. 插入用戶角色關(guān)聯(lián) const string sqlRole INSERT INTO SysUserRole (UserId, RoleId) VALUES (UserId, RoleId);; using (var conn new SqlConnection(_connectionString)) { conn.Open(); using (var tx conn.BeginTransaction()) { try { int newUserId conn.ExecuteScalarint(sqlUser, new { UserName userName, PasswordHash passwordHash, Salt salt, DisplayName displayName }, tx); foreach (int roleId in roleIds) { conn.Execute(sqlRole, new { UserId newUserId, RoleId roleId }, tx); } tx.Commit(); return true; } catch (Exception ex) { tx.Rollback(); Logger.Error(CreateUserWithRoles failed, ex); return false; } } } }參數(shù)說明Dapper的匿名對象參數(shù)名和SQL里的參數(shù)名必須一一對應(yīng)ExecuteScalar 用來拿自增主鍵SQL Server里是SCOPE_IDENTITY而不是IDENTITY。事務(wù)是這里的主角。把Insert用戶和Insert角色放進(jìn)同一個BeginTransaction要么全提交要么全回滾。我在實際項目里見過有人分開調(diào)用兩個方法執(zhí)行兩條SQL結(jié)果用戶創(chuàng)建成功、角色分配失敗最后靠手工寫腳本補(bǔ)數(shù)據(jù)才恢復(fù)。有了事務(wù)這類事故從根上斷了。PasswordHelper的生成邏輯也值得展開GenerateSalt用RNGCryptoServiceProvider生成16字節(jié)隨機(jī)數(shù)轉(zhuǎn)Hex長度32位HashPassword用Rfc2898DeriveBytes迭代10000次輸出128位十六進(jìn)制字符串。不要用MD5也不要只用一次SHA256理由在5.3節(jié)會講。3.3 參數(shù)校驗清單空密碼、重復(fù)用戶名、停用角色怎么攔數(shù)據(jù)庫增刪改查只是基礎(chǔ)用戶模塊真正的麻煩在校驗。以下三條校驗我每次都會做漏掉任何一條都會在測試階段暴露。用戶名重復(fù)插入前先查一下SysUser里有沒有同名用戶。數(shù)據(jù)庫雖然有唯一索引兜底但Winform里重復(fù)點擊保存按鈕時兩個請求可能同時越過查詢直接插入唯一索引拋出的異常用戶體驗極差。正確寫法是捕獲唯一索引沖突的SQLException轉(zhuǎn)成中文提示“用戶名已存在”而不是把異常堆棧直接彈給操作員??彰艽a和弱密碼密碼在客戶端不能為空這個校驗要在按鈕點擊事件里先做而不是等數(shù)據(jù)庫報錯。長度校驗至少6位如果這是給客戶內(nèi)部系統(tǒng)用可以在后臺留一個“是否強(qiáng)制強(qiáng)密碼”的配置項不寫死。停用角色角色表里可以加一個IsEnabled字段來區(qū)分啟用和停用。分配角色時CheckedListBox只勾選啟用角色保存前再校驗一遍roleIds里沒有停用角色I(xiàn)D。不然用戶綁定了一個被停用的角色登錄時權(quán)限加載為空排查起來以為是權(quán)限bug其實是數(shù)據(jù)問題。4. 操作權(quán)限設(shè)置登錄后按權(quán)限碼控制菜單和按鈕而不是到處if判斷4.1 登錄成功之后權(quán)限碼一次性加載進(jìn)內(nèi)存用戶登錄成功后第一件事不是跳轉(zhuǎn)主窗體而是把該用戶的所有權(quán)限碼查出來加載到內(nèi)存。這個查詢跨越四張表SysUser、SysUserRole、SysRolePermission、SysPermission。常見做法是寫一個靜態(tài)權(quán)限工具類加載后全程序共享。public static class PermissionHelper { private static readonly HashSetstring _permissions new HashSetstring(); public static void LoadPermissions(int userId) { _permissions.Clear(); const string sql SELECT DISTINCT p.PermissionCode FROM SysUser u INNER JOIN SysUserRole ur ON u.UserId ur.UserId INNER JOIN SysRolePermission rp ON ur.RoleId rp.RoleId INNER JOIN SysPermission p ON rp.PermissionId p.PermissionId WHERE u.UserId UserId AND u.IsEnabled 1;; using (var conn new SqlConnection(_connectionString)) { var codes conn.Querystring(sql, new { UserId userId }); foreach (var code in codes) { _permissions.Add(code); } } } public static bool HasPermission(string permissionCode) { return _permissions.Contains(permissionCode); } }參數(shù)說明HashSet的Contains是O(1)判斷比每次訪問數(shù)據(jù)庫判斷快得多權(quán)限碼統(tǒng)一用小寫或大寫風(fēng)格我建議全部用PascalCase和C#常量風(fēng)格保持一致。這個加載動作必須在主窗體展示之前完成。如果用戶沒有登錄成功主窗體壓根不該出現(xiàn)。權(quán)限加載失敗時不能靜默吞掉異常否則界面上所有按鈕都會以“無權(quán)限”狀態(tài)呈現(xiàn)看起來像系統(tǒng)壞了實際是權(quán)限沒查出來。4.2 渲染時攔截菜單隱藏、按鈕禁用而不是點擊后才彈窗操作權(quán)限設(shè)置最容易寫崩的地方是權(quán)限判斷散落在按鈕點擊事件里。比如每給“刪除用戶”按鈕加一段if (PermissionHelper.HasPermission(UserManage)) else MessageBox.Show(無權(quán)限)。代碼能跑但一個窗體十幾個按鈕就要寫十幾段重復(fù)判斷而且按鈕只是點擊時提示用戶能看到一個點了沒反應(yīng)的按鈕體驗很差。更穩(wěn)的做法是渲染時攔截窗體加載完成后遍歷所有需要控制的控件按權(quán)限碼統(tǒng)一設(shè)置Visible或Enabled。核心是寫一個遞歸掃描控件的方法private void ApplyPermission(Control root) { foreach (Control c in root.Controls) { if (c is Button btn btn.Tag ! null) { string code btn.Tag.ToString(); btn.Visible PermissionHelper.HasPermission(code); } else if (c is ToolStripMenuItem menu menu.Tag ! null) { string code menu.Tag.ToString(); menu.Visible PermissionHelper.HasPermission(code); } if (c.HasChildren) { ApplyPermission(c); } } }調(diào)用時機(jī)放在主窗體的Load事件里。關(guān)鍵點是控件的Tag屬性。給每個需要權(quán)限控制的按鈕和菜單設(shè)置Tag為權(quán)限碼代碼里不在業(yè)務(wù)邏輯里判斷權(quán)限只在渲染階段掃描一次。這樣權(quán)限變更時只需要改窗體的Tag不需要改按鈕的Click邏輯。做法反過來也成立登錄用戶擁有超管角色時直接跳過權(quán)限掃描所有控件可見普通角色走掃描邏輯。這是給管理員留后門的標(biāo)準(zhǔn)做法用角色編碼判斷。4.3 權(quán)限碼粒度按功能塊控制別把按鈕點成雪花粒度是操作權(quán)限設(shè)置最需要拿捏的地方。權(quán)限碼太少比如只有“管理員”和“普通用戶”兩種角色控制不細(xì)致權(quán)限碼太多比如“修改用戶姓名”“修改用戶密碼”“修改用戶郵箱”各一個權(quán)限碼權(quán)限配置界面會讓客戶看得頭皮發(fā)麻。我一般按功能塊劃分一個模塊一個權(quán)限碼。比如“UserManage”管用戶模塊的新增、修改、刪除、重置密碼“DataImport”管數(shù)據(jù)導(dǎo)入“DataExport”管數(shù)據(jù)導(dǎo)出。按鈕級別不再細(xì)分。原因是Winform內(nèi)部系統(tǒng)的使用群體有限操作員和管理員的職能差異遠(yuǎn)沒有大到需要給每個按鈕授權(quán)。權(quán)限碼數(shù)量控制在20個以內(nèi)配置界面用CheckBox分組勾選客戶能看明白程序也好維護(hù)。5. 用戶模塊開發(fā)避坑權(quán)限散落、日志卡UI、MD5密碼等6條血淚經(jīng)驗5.1 權(quán)限判斷散落在按鈕點擊事件里需求一變就要翻遍整個窗體現(xiàn)象客戶提出“操作員不能刪除用戶”開發(fā)人員需要在五六個窗體的刪除按鈕點擊事件里分別加判斷。改完后測試發(fā)現(xiàn)列表右鍵菜單里的刪除沒攔、工具欄刪除沒攔、快捷鍵刪除沒攔。原因權(quán)限判斷分散在各處每個入口單獨(dú)寫一份if邏輯遺漏是必然的。改需求時找不到“所有需要判斷權(quán)限的地方”。解決用4.2節(jié)的控件掃描方案權(quán)限判斷集中到一處。所有按鈕、菜單的權(quán)限碼都通過Tag配置渲染時統(tǒng)一處理刪除用戶的方法內(nèi)部再加一道服務(wù)端校驗UI層和業(yè)務(wù)層雙重保險。這樣需求變更時只需要調(diào)整Tag或權(quán)限碼不用翻窗體代碼。5.2 日志直接寫在UI線程點幾下鼠標(biāo)界面就卡住現(xiàn)象用戶操作幾次后Winform界面越來越卡點擊按鈕要等一兩秒才有反應(yīng)。任務(wù)管理器看到進(jìn)程CPU不高但界面無響應(yīng)。原因日志表寫入操作直接放在按鈕點擊事件里同步執(zhí)行每次寫日志都占用UI線程操作一多UI線程全耗在等待數(shù)據(jù)庫響應(yīng)上。更隱蔽的是日志寫入失敗拋異常直接打斷正常業(yè)務(wù)操作。解決日志寫入統(tǒng)一走后臺線程不阻塞UI。常見做法是定義一個日志方法內(nèi)部用ThreadPool.QueueUserWorkItem或Task.Run把插入操作丟到后臺如果希望順序?qū)懭胗靡粋€日志隊列加單線程消費(fèi)。日志寫入失敗不能影響主流程寫日志的代碼整體包一層try-catch失敗就丟掉本次日志。5.3 密碼用MD5裸存被脫庫等于全網(wǎng)撞庫現(xiàn)象數(shù)據(jù)庫被拖走后攻擊者用彩虹表直接反查出大部分用戶的密碼包括管理員。因為MD5相同的明文所有系統(tǒng)都一樣撞庫成本極低。原因開發(fā)階段為了省事直接用MD5(密碼)存庫沒有加鹽也沒有迭代計算。MD5本身不是為密碼存儲設(shè)計的計算太快暴力破解成本低。解決用PBKDF2或bcrypt。代碼里已經(jīng)提到PasswordHelper核心是每人生成獨(dú)立鹽鹽和哈希一起存登錄時取出鹽重新計算哈希再比對。迭代次數(shù)不要低于10000這個開銷在登錄時完全可以接受。老系統(tǒng)遷移時可以用“舊密碼哈希算法標(biāo)記”區(qū)分存量用戶用戶下次登錄自動升級為新算法。5.4 刪除角色沒處理用戶角色關(guān)聯(lián)要么外鍵報錯要么留孤兒數(shù)據(jù)現(xiàn)象刪除一個正在被用戶使用的角色系統(tǒng)報錯“外鍵約束沖突”刪除不了或者去掉物理外鍵后直接刪除用戶登錄時加載不到權(quán)限成了“有賬號沒權(quán)限”的孤兒數(shù)據(jù)。原因刪除角色前沒有檢查SysUserRole和SysRolePermission表里有沒有關(guān)聯(lián)記錄。開發(fā)階段圖省事不加物理外鍵刪除時不報錯反而掩蓋了數(shù)據(jù)問題。解決寫一個刪除角色的服務(wù)方法按順序檢查關(guān)聯(lián)表、刪除關(guān)聯(lián)數(shù)據(jù)、再刪角色表。刪除前彈窗提示“該角色下有3個用戶刪除后這些用戶將失去權(quán)限”。數(shù)據(jù)完整性靠代碼保證但提示和確認(rèn)環(huán)節(jié)不能省。這個邏輯放在一個事務(wù)里刪除失敗全部回滾。5.5 權(quán)限加載失敗時靜默吞掉異常整個窗體像沒裝權(quán)限一樣全開現(xiàn)象某客戶端登錄后所有菜單按鈕全部可見點任何功能都能操作甚至包括“重置密碼”——實際上這個用戶只應(yīng)該看日志。原因加載權(quán)限的代碼里寫了空的catch塊或者加載SQL里表名拼錯被捕獲后沒處理。權(quán)限集為空HasPermission永遠(yuǎn)返回false掃描邏輯把所有控件隱藏或顯示的邏輯寫反時會導(dǎo)致權(quán)限全部放開。我見過最危險的寫法是catch后直接return然后登錄流程繼續(xù)往下走。解決權(quán)限加載失敗必須中斷登錄流程拋出明確錯誤不讓用戶進(jìn)入主界面。調(diào)試階段可以把加載結(jié)果打印出來核對上線后保留至少一條錯誤日志。加一條驗證邏輯加載完成后如果角色數(shù)大于0但權(quán)限數(shù)為0視為異常狀態(tài)記錄日志并提示管理員檢查角色權(quán)限配置。5.6 時間字段用字符串存日志排序和查詢?nèi)强蝇F(xiàn)象日志列表按CreateTime排序時出現(xiàn)“2024/1/10”排在“2024/1/9 23:59:59”前面的情況按日期范圍查詢?nèi)罩究傆幸粌商斓臄?shù)據(jù)查不出來。原因時間字段在數(shù)據(jù)庫里建成了VARCHAR插入時用了當(dāng)前時間的ToString()格式受系統(tǒng)區(qū)域設(shè)置影響排序規(guī)則是字符串字典序和自然時間序不一致。解決數(shù)據(jù)庫里時間字段一律用DATETIME或DATETIME2代碼里用DateTime.NowDapper自動映射不要手動ToString()。界面展示格式化放到顯示層做。如果有的項目已經(jīng)用字符串存了老數(shù)據(jù)遷移時用一個標(biāo)準(zhǔn)格式y(tǒng)yyy-MM-dd HH:mm:ss重新整理排序才能可靠。6. 權(quán)限驗證SQL、熱刷新與日志歸檔上線后維護(hù)的三件小事6.1 一條SQL直接核對某個用戶有哪些權(quán)限程序界面上權(quán)限判斷是否符合預(yù)期開發(fā)時無法全部靠點擊測試覆蓋。我的習(xí)慣是寫完權(quán)限模塊后直接在數(shù)據(jù)庫客戶端執(zhí)行一條SQL把某個用戶最終能執(zhí)行的功能碼列出來核對。SELECT DISTINCT p.PermissionCode, p.PermissionName FROM SysUser u INNER JOIN SysUserRole ur ON u.UserId ur.UserId INNER JOIN SysRole r ON ur.RoleId r.RoleId INNER JOIN SysRolePermission rp ON r.RoleId rp.RoleId INNER JOIN SysPermission p ON rp.PermissionId p.PermissionId WHERE u.UserName Nzhangsan AND u.IsEnabled 1 ORDER BY p.PermissionCode;這條SQL就是把登錄后的權(quán)限查詢單獨(dú)拿出來驗證跑完能直接看到用戶掛了哪些角色、每個角色給了哪些權(quán)限。上線后客戶反饋“某人權(quán)限不對”先用這條SQL查數(shù)據(jù)再去看代碼邏輯能篩掉一半的誤報。6.2 權(quán)限熱刷新管理員改完權(quán)限不重啟程序Winform程序連續(xù)運(yùn)行幾天后管理員改了某角色的權(quán)限配置客戶端還保留著登錄時的內(nèi)存權(quán)限必須重啟才能生效。內(nèi)部系統(tǒng)這樣做影響不大但如果客戶端很多逐個重啟也是麻煩。我在權(quán)限模塊里加了一個重置按鈕管理員在主界面點擊“刷新權(quán)限”調(diào)用PermissionHelper.ClearPermissions()后重新按當(dāng)前登錄用戶ID走一遍加載流程界面控件再掃描一次。這樣權(quán)限熱更新不用重啟程序。實現(xiàn)時有個細(xì)節(jié)刷新前要記錄當(dāng)前窗體的權(quán)限狀態(tài)刷新后重新調(diào)用ApplyPermission即可否則已經(jīng)隱藏的按鈕不會自動恢復(fù)。另外一個更省事的方案是提供一個隱藏快捷鍵管理員按F12調(diào)出權(quán)限刷新入口不影響普通用戶使用。6.3 日志歸檔按時間分區(qū)還是定時清理日志表只增不改時間久了SysLog會膨脹到幾千萬行。Winform內(nèi)部系統(tǒng)一般不會高頻產(chǎn)生日志但“導(dǎo)出數(shù)據(jù)”“登錄失敗”這類操作每天都可能有幾百條一年積累下來也有幾十萬行。日志查詢界面如果直接掃全表分頁會越翻越慢。我的做法是日志表保留最近半年的數(shù)據(jù)歸檔腳本每月月底把半年前的記錄插入到SysLog_History表再從主表刪除SysLog_History按月份分區(qū)或按年份分表。這個歸檔邏輯用數(shù)據(jù)庫計劃任務(wù)調(diào)度不需要Winform程序參與。日志表的數(shù)據(jù)量大是因為沒有歸檔策略不是數(shù)據(jù)庫不行這個問題越早處理越輕松。最后說一句我的習(xí)慣用戶模塊做完之后我會刻意用“新建用戶-分配角色-改權(quán)限-查日志”四個動作走一遍全流程再故意制造幾類數(shù)據(jù)異常比如刪一個有用戶的角色、往日志表里寫超長Detail字段。這套動作堅持下來線下踩掉的坑比上線后客戶發(fā)現(xiàn)的少得多。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
五月丁香综合啪啪| 99九九精品视频推荐| 亚洲精品成人| 婷婷五月激情中文字幕| 亚洲性色XXXXX| 久久这里这里有精品免费视频| 探花搜索结果 - 黄上黄| 久久精品无码一区| 大地9中文在线观看免费高清| 91日本在线| 天天五月天综合网址| 激情五月婷婷综合视频| 丁香六月av| 9久视频| 五月婷色丁香| 真实熟女-91九色| 97干干干丁香| 熟妇人妻中文字幕无码老熟妇 | 99爱免费视频| 插插五月天| 成人色五月天婷婷| 日夜操B| 99热精品超碰| 综合 蜜月 婷婷| 婷婷色色网站| 色青青电影色五月| 高清资源站日A美A欧亚…| 99综合网| 天天爱天天爽| 五月天开心网| 婷婷99狠狠| 99热播放| 狠狠爱激情网| 91精品在线看| 免费黄色片子| 丁香色色网| 美国十月色婷婷在线观看| 天天爽天天做| 久久这里有精品视频| 亚洲XX日本| 夜夜骑日日操| 日本婷婷丁香五月| 中文不卡一二三区| 秋霞电影理论| 人人色AV| 在线A色| 色五月久久成人婷婷| 天天操天天爱天天日| 五月丁香激情综合| 一起草av| 99色这里| 五月激情丁香久久综合网| 狠狠干综合| 激情综合五月天| www.久久爱.com| 伊人婷婷五月天av| 九月av| 玖玖五月丁香| 丁香五月手机在线| 亭亭色色五月天| 精品久久9| 精品女人九九九| 婷婷五月天丁香社区| 第四色大香蕉| 婷婷五月天Av| 日韩啪啪视频| 五月婷婷在线视频免费观看| 亚洲视频在线观看99| 日日噜狠狠色综| 99国产小视频2013| 色五月久久成人婷婷| 九九爱这里只有精品| 综合99在线| 激情99热| 青青福利网| 激情婷婷五月天在线观看| 夜夜夜叫天天天做| 五月婷婷影| 五月婷六月| 99看片| 直接看的AV| 五月婷婷六月丁香在线视频| 丁香五月偷拍| 国产综合色婷婷精品久久| 涩综合网| 26uuu国产| 丁香六月综合激情| 99精品偷自拍| 中文字幕av久久爽| 色九九综合热99| 国内一级精品| 色八月婷婷| 婷婷五月色| 人妻久久久久| 丁香五月大片| 六月丁香婷婷五月| 狼人婷婷综合| 九九热在线视频观看| 九九热精品视频在线观看| 激情小说五月天| 一本色道久久88综合日韩精品| 超碰人人摸人人操| 久久九九一區| 激情六月天婷婷| 中文字幕av久久爽一区| 99这里只有精品国产| 丁香色播五月天| 天天色综合综合| 五月婷婷啪| 日日操天天操| 九九色综合九九色| 在线看的免费网站| 天堂在线婷婷| 久久婷婷综合网| 亚洲va日| 天天干天天爽天天操| 色五月婷婷影院| 婷婷刺激综合| 丝袜大香蕉| 综合色、色综合| 婷婷婷久久| 五月天婷综合| 丁香无五月网| 99综合免费视频| 精品人妻伦一二三区久久| 9久国产精品| 欧美婷婷综合| 激情六月婷婷啪啪| www.色9| 五月天亚洲图片婷婷| 五月丁香激情婷婷综合字幕| 色色网站在线| www.久久99| 五月天婷婷成人网| 日本玖玖在线| 国精产品一区一区三区免费视频| 久久婷婷原创视频| 97人人搞| 日韩六十路91性交电影| 色婷婷电影网| 六月激情综合| AV片在线观看| 久久视频婷婷视频| 天天拍久久| 五月天婷婷视频小说| 色99在线| 8050一级网| 五月色亚洲| jiujiu热在线视频| 欧美激情-区二区三区| xxxx久| 色五月综合网| 色婷婷色综合| 那里有AV网址| 丁香六月久| 国产欧美第五十五页| 蜜臀AV在线观看| 久久久五月天婷婷成人网| www.五月天色色色| 五月婷婷色男女| 色色色色色网站| 色婷婷丁香| 欧美成人AAA片一区国产精品| 9999综合99综合人| 久久婷婷五月国产色综合激情| 第一区久久网站| 99热只有| 国产成人精品一区二三区熟女在线 | 久久久中文| 色天堂婷婷| 婷婷之玖玖| 日韩欧美五月丁综合| 天天弄天天爽| 激情综合激情五月一起草| 久青操| 欧美搡BBBBB摔BBBBB| 五月丁香啪。| 久久五月网| 婷婷性福五月天| 国产激情视频在线观看| 狠狠九九婷婷韩| 亚洲婷婷五月天综合| 这里只有精品免费观看网占| 综合色播| 色色色9 9 9| 精品人妻伦| 色欲色香综合网| 九九热最新地址| 99久久久精品| 色爱综合视频| 五月婷婷丁香啪啪| 五月婷A V在线| 精品久久9| 日韩婷婷五月天| 五月天激情久久| 成人看片网站| 亚洲网站999| 婷婷激情综合网| 综激情网| 五月婷婷婷色| 婷婷天天插天天爱| www99精品| 99国产99| 最新日本A片| 色综合久久88色综合天天99| 亚洲无AV在线中文字幕| 色婷婷网| 久热免费| 337p午夜影院| 人妻久久久| 新五月天婷婷激情电影| 超碰猛烈的性猛交| 亚洲区在线| 久久机热这里只有精品免费视频| 五月天色综合| 香蕉综合网| 亚洲欧洲美女在线观| 婷婷放心五日爱| 五月丁香六月在线| 丁香色婷婷色手机免费在线| 亚洲精品va| 天天插天天日| 久久大国产香蕉| 久久五月婷婷电影| 亚洲色五月| 成人婷婷色综合| 久久婷婷五月天| 久久色五月天激情小说| 极品少妇XXXX精品少妇偷拍| 亚洲五月婷婷| 日亚二欧美| 91色综合久久| 狠狠狠狠狠狠草| 日韩性视频| 99操99| 亚洲色综久久五月| 99r这里只有精品在线观看| 在线播放中文字幕| 五月久久婷婷| 超碰国产AV| 91嫩草国产线观看亚洲一区二区| 久久婷婷五月国产激情综合片| 99热99极品观看| 麻豆忘忧草午夜| 五月社区丁香| 色婷婷电影网| 99热老司机| 99色视频在线| 九九精品丁香花| 思思99精品视频在线观看| 久色网址| 婷婷五月丁香综合激情| AV性爱网| 大香蕉天堂色| 婷婷五月骚厕所| 丁香六月婷婷| 亚洲小视频免费看| 99操碰| 夜色综合网| 亚洲天码视频www蛋播视频| 亚洲爆乳无码精品AAA片蜜桃| 婷婷色色五月天| 激情综合99| 亚洲色综合| 婷婷精品在线| 人人人操| 色偷偷色婷婷| 国产亚洲精品久久一区二区三区| 97香蕉人人在线观看| 久8色色| 国产黄大片在线观看画质优化| 丁香五月激情宗合网| 五月丁香婷婷色色色| 超碰在线观看成人视| 日韩操逼小电影| 99婷婷狠狠成为人免费视频| 六月丁香综合999| 色色婷婷五月天| 97极品在线| 色香欲综合| 婷婷香蕉香| 色婷婷狠狠色| 黄色视频网站在线播放| 五月色丁香婷婷中文字幕| 欧美色色色| 激情综合五月婷| 日韩另类| 久久激情视频| 人人摸人人搞| 99re66热这里只有精品| 五月激情六月综合| 亭亭玉立国色天香| 九月婷婷久久| 啪啪色激情五月天| 五月天久久婷婷| 97碰在线视频| 99A片| 国产激情视频在线观看| 香蕉婷婷| 欧美色婷婷| 色噜噜狠狠色综合日日| 四月婷婷五月色综合| 99自拍视频在线观看| 国产成人在线精品| 国产日日操夜夜操的肉棒视频| 乱精品一区字幕二区| 深爱五月激情网| 激情开心五月天| sesesesezonghe| 五月丁香偷拍| 五月婷婷无码| 色婷婷亚洲婷婷| 久热精品视频在线观| 丁香五月偷拍| 五月丁香好婷婷姑娘综合网| 无码日本精品XXXXXXXXX | 五月丁香婷婷激情在线视频| 国产偷人爽久久久久久老妇APP | 五月天婷五月天综合网在线观| 我爱大香蕉| www.25五月婷婷| 五月婷色| 99热这里只有精品23| 无码少妇高潮喷水A片免费| 婷婷丁香色五月天久久88| 色色色网站| 亚洲五月婷婷在线| 日韩无码AV电影网站| 日本欧美国产| 精品一区二区三区三区| 无码橾| 五月丁香无码| 婷婷五月天小说| 婷婷五月天在线观看av| 丁香综合日产精品久久| 色色射| 中文字幕五月久久婷| 69久久99精品久久久久婷婷| 91成人品| www.久久| 六月婷婷激情小说网| 91碰碰碰久久久久| 色欲婷婷五月天丁香| 五月色丁香| 五月天婷婷在线观看| 久草A片| 色色com| 色五月在线| 偷拍九九热| 天天五月天综合网址| 四月婷婷五月丁香| 亚洲天天| 五月婷丁香久久久| 日本精品久久久久中文字幕| av网站中文| www.色色com| 先锋资源91| 婷婷五月天色色| 久久久天堂国产精品女人| 深爱五月天天| 久久的爱大香蕉| www.婷婷亚洲基地| 性色播| 久久一级AV| 思思 热 99| 射久久丁香五月| 一区二区三区视频| www.五月天性.com| 亚洲成人无码片| 五月丁香精品| WWW.桔色成人.COM入口| 久热天堂| 九九性视频| 婷婷五月天亚洲天堂| 五月天婷婷色综合| 五月丁香精品| 久婷婷久草| 丁香婷婷五月综合欧美另类| 伊人久久大香网| 色色色色色级无码| 色婷婷播放| 天天操中文字幕| 人人色婷婷五月天| 丁香五月伊人| 精品人人操| 成人五月天婷婷| 97久久久久久久久久久| 九九热re99re6在线精品| 五月天日日操夜夜操| 91919191919久久成人视频| 中文av网| 五月丁香综合激情在线观看| 日本天堂网站99| 久久婷婷五月综合伊人| 色亚洲婷婷| 久久久久久久久久久久63| 国产精品久久..4399| 色播五月丁香综合| 97婷婷在线视频| 五月婷婷三级| 久99久热只有精品国产99| 999九九九久久久99HD| 一本久道综合色婷婷五月| 午夜九九电影| 婷婷五月天黄色网址| 九九精品热| 欧美黄色AA片哗啦啦啦| AV堂狠狠干| 9视频在线成人网站| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | BBWCUCKOLD精品熟妇| 五月六月丁香激情| caop在线| 99只有精品9| 色五月激情| 综合色五月天| 色五月婷婷91| 禁欲电影完整版在线播放| 99热国产这里只有精品| 亚洲中文丁香| 综合九九久久| 国产激情久久久| 色婷婷小说| 色婷婷视频| 色婷婷精| 丁香五月影院| 五月天开心婷婷激情网站| 久久er这里只有精品| 丁香五月婷婷激情蜜桃| 丁香五月欧美| 99综合| 人人色性网| 视频在线免费观看欧洲乱码| 性一交一乱一交A片久| 色婷婷丁香五月| 五月天欧美 另类小说| 99九九在线视频| 国产成人精品一区二三区熟女在线 | 色婷婷婷婷五月天| 亚洲天堂亚洲色色色| 性爱激情小说AV五月丁香花| 三人荫蒂添的好舒服A片| 久久久久激情网| 日日撸天天干| 丁香婷婷大香蕉| 字幕网AV中文字幕| 色婷婷www| 一本伊人色婷| 久热只有这里有精品| 色站9/| 五月丁香六月激情综合| 亭亭五月丁香五月天激情| 婷婷丁香高潮了| 狼人婷婷久久| 中文婷婷狠狠| 99热这里只有精品在线观看| 开心婷婷五月| 狠狠色狠狠鲁| 99色婷婷视频| 国产综合久久久777777| 九九综合九| 久久免片| 丁香激情五月| 色丁香六月| 日韩人妻无码一区二区| 五月丁香婷婷综合久久| 九九热99久久99| 亚洲亚洲人成综合网络| 中文字幕在线免费观看视频| 人人干人人看| 精品九九视频在线观看| 久久久精品视频79| 偷拍91九色| 亚洲传媒在线观看| 欧美性猛交 XXXX 乱大交| 99色干| 天天操夜夜爽| 亚洲久久视频| 日本三级黄色大片| 99啪啪网| 中文字幕人妻AV| 国产FREESEXVIDEOS性中国| 大香蕉久操| 综合色播| 99热日韩| 丁香久久五月天视频在线观看| 亚洲激情四射| 九九婷婷综合| 婷婷九月丁香天堂丁香天堂| 婷婷伊人综合| 亚洲第一成人无码A片| 五月天婷婷在线AN| yellow视频在线观看91| 久热只有精品| 国产精品日韩十五区| 色。 婷婷婷| 国产婷婷色五月| 91碰超| 激情婷婷五月天丁香| 亚洲六月综合激情久久下卡| 97碰碰碰免费公开在线视频| 综合五月天| 久久久久激情| 免费看欧美成人A片无码| 五月丁香六月婷婷视频| 精品成人无码A片观看香草视频| 色五月丁香五月五月婷婷| 色综合色五月| 丁香久月| 丁香色五月AV在线| 亚洲视频在线网| 99视频在线观看地址| 天天插天天干| 丁香六月五月天| 日韩在线视频网站| 人妻aV在线| 色五月婷婷一二| 天天操夜夜爽歪歪| 久久这里只有精品视频26| 丁香花操逼| 91av视频| 99九九精品视频推荐| 亚洲精品久久久久久久久久飞鱼 | www,av好吊操| 五月婷婷九月婷婷九月婷婷| 第四色婷婷色五月| 九九久久99| 综合激情五月四射婷婷| 婷婷丁香五月天婷婷| 99热人人| 五月婷婷色色色| 婷婷综合97| 91精产品自偷自偷综合| 亚洲无aV在线中文字幕| 五月婷婷六月丁香玖玖玫瑰91| 加勒比久热| 日日操无码| 九九九九热99超碰| 欧洲色| 亚洲丁香婷婷五月天综合色| 国产乱码久久| 日本激情ⅩXX免费视频| 天天日日人| 99在线er热| 可以免费观看的av网址| 日韩色色色99| 色五月之第四色| WWW色综合| 第2色五月婷| 性色播| WWW·天天操·视频?| 激情五月天在线观看色婷婷| 99热这里只有精品在线免费| 婷婷五月天激情在线观看| 色97综合婷婷天天色| 2025中文在线视频字幕免费观看| 管管補管管紱| 99视频这里只有久久精品| 色五月天在线| 婷婷激情五月综合基地| 色99综合视频| 久久久精品人妻录| 五月婷婷激情久久| 久青草影院| 色婷婷激情四射视频| 影音先锋91| 99国产精品久久久久久久久久久 | 一区二区乱码视频| AAA久久| 久久婷婷成人综合色怡春院| www.99在线| 极品人妻VIDEOSSS人妻| 91久久精品国产91性色TV| 日本熟妇乱妇熟色A片蜜桃| 99亚洲精品| 免费无码毛片一区二区A片| 丁香六月在线综合| 丁香五月婷婷综合激情啪啪啪| AV网在线观看| 国产免费av在线| 婷婷五月综合久久中文字幕| 51成人| 欧美日本VA| 婷婷成人网五月天| 狠狠色丁香99| 人妻自慰高清合集| 激情五月婷| 黄色成人网站在线播放| 色综合激情| 伊人99热| 无码日本精品XXXXXXXXX| 色情终和网| 欧在线一区| 亚洲xx网| 五月丁香亚洲校园欧美| 五月激情开心婷婷| 久狠日av| www.婷婷,com| 久久久999精品| 97五月天| 狠狠噪| 丁香五月桃花在线激情综合| 玖玖色资源| 亚洲精品成人| 激情的五月| 天天摸天天日天天舔| 婷婷丁香六月天| 人人操插| 99热伊人| 在线超碰免费| 色九亚洲| 这里只有视频精品| 天天谢天天操| 五月婷婷激情久久| 午夜一区| 九九精品9| 色综合香蕉| 日韩久久视频| www天天干| 国产五月天欧美色| www狠狠| 午夜69成人做爰视频| 九久热| 国产白丝在线一区| 婷婷五月天va| 国产一二三四五六七八视频| 天堂久久婷婷| 丁香五月综合| 9久操| 超碰女人天堂| 九六五月天婷婷| 天天摸天天舔| 婷婷五月天成人网| 狠狠色综合图片| 99热99在线精品| a网站免费观看| 丁香婷婷久久老熟女综合网| 婷婷五月六| 99色免费观看全部| 日韩专区五月天婷婷丁香| 久热爱大香蕉在线蜜臀悦色| 国产 码在线成人网站| 六月婷色六月| 五月丁香婷婷综合视频| 丁香五月激情五月| 天天日P天天射P| 五月婷婷六月天| 丁香五月天无码| 99热在线看片| 亚洲乱码日产精品BD| 大香蕉人人网| 成人精品在线观看| 99小视频网站| 九九伊人网| 8050一级网| 欧美色99| 九九热这里只有精品9| 色女人久久| 丰满少妇乱A片无码| 9视频1在线| 99色看这里只有精品| 天天操天天曰| 99热综合| 婷婷色色欧美| 日日干夜夜撸夜夜骑| 五月天婷婷基地| 五月激情综合网| 九热视频精品| 激情黄色五月天| 亚洲碰碰碰| 丰满少妇猛烈A片免费看观看| 99精品97| 五月天色在线| 99re久久| 久久婷五月影院| 五月婷丁香| 色欲久久久久| 综合色播| www.色色色com| av在线观看网站| 欧美综合丁香网| 五月激情网站| 激情婷婷五月丁香啪啪啪| 五月天激情图片| 五月婷婷网五月在线| 26uuu日韩| 香蕉中文在线| 深爱激情九九五月天 | 六月丁香五月婷婷首页| 国产无套精品一区二区| 色婷婷av在线观看| 9l视频自拍九色9l视频在线观看| 激情综合网亚洲色图| 五月丁香啪啪激情| 一区操| 日操| www.91婷婷| 99精品网| 中文资源在线a | 激情五月天婷婷直播| 5月丁香婷婷激情网| 九九色色| 91九色精品女同系列| 亚洲第一精品网站| 婷婷五月天小说| www.久久久久久| 欧美Va在线| 久久久久久人妻| 日本网站久久| 无码毛片992367| 97久久人人操| 大香伊人婷婷| 思思综合热| 99免费| 黄色毛片精品| 六月婷五月丁香| 婷婷色播婷婷| 丁香五月黄色| 精品九九视频在线观看| 天天骑天天操| 97干视频在线| 久久开心五月婷婷| 亚洲激情五月| 91肏| 国产日韩欧美| 丁香性爱在线视频| 五月欧美色播| 亚洲视频二区| 97在线日本| 免费色色色| 99ri在线| 婷婷丁香成人五月天| www色五月天| 国产乱妇无乱码大黄AA片| AAA久久| 激情五月综合亚洲另类| 91久女| 天天草天天舔| 色色a| 99九九综合久久九九| 婷婷五月情| 黄色激情网站在线观看| 五月婷婷丁香啪啪| 日本一道久久| 黄网在线免费播放| 日日干天天爽| 97婷婷五月| 人人综合五月人人婷婷| 亚洲无码99| 久操操| WWW.桔色成人.COM| 综合99在线| 成人色色视频| 久久久国产精品黄毛片| 蜜乳.comcom| 久久丁香| 久久色婷婷| 久草狼人| 2021日韩无码| 婷婷丁香五月综合网上 | 久久婷婷综合五月天| 亚洲操精品| 丁香六月综合激情| 欧美婷婷九月| 五月婷婷激情久久| 久久综合五月情| se99在线| 天堂无码人妻精品AV一区| ay2区| 久久九九免费视频| 婷婷91| www.99热视频| 成人电影在线免费试看| 干一干xxxx| 六月婷婷网| 五月激情婷婷女| 国产精品A成V人在线播放| 婷婷五六月丁香| 99热精品免费| 99成人网一区| 超碰免费人妻| 丁香婷婷五月六月久久| 色噜噜狠狠色综合网| 五月婷婷,六月婷婷| 五月丁香在线看| 天天肏天天舔AV| 天天久久综合| 夜夜嗨一区二区三区直播内容| 久热无码| 91成人性爱视频| 99日精品视频| 婷婷九月综合| 蜜桃婷婷狠狠久久综合| 日日操日日撸| Caoub青青超碰| 婷婷五月花丁香| 久久久久9久无码视频| 特级片神马电影| 97超碰,人人舔,人人操,人人摸| 亭亭色天香| 成人免费黄色短视频| 婷婷婷色五月| 午夜69成人做爰视频| 久久伊人日日夜夜| 五月丁香亭亭电影久久| 丁香五月亚洲天堂| 色九九九综合| 色五月综合在线| 色婷婷综合丁香五月天| 九九这里只有精品| 99热综合在线| 国产精品色色| 综合99综合久久久久久久| 深夜男女福利刺激影院一区完整| 伊人久久艹| 久久98| 欧美激情丁香五月| 色一情一乱一乱一区91Av| 午夜理论片最新午夜理论剧| 激情综合五月婷婷| 天天色爽| 中国操逼99| 丁香五月激情无码视频| 九一娱乐在线观看视频| 五月婷婷婷婷婷| 超碰在线资源| 亚洲综合色网| 婷婷黄色| 亭亭玉月丁香| 五月色情婷婷| 青草视频在线观看视频| 色色亚卅| 丁香97综合| 国产婷婷五月色情综合| 日本久草福利| 色在线99| 久久婷五月天| 激情婷婷丁香| 狠狠色狠狠色综合日日91| 婷婷五月天丁香综合网| 激情综合丁香五月| 婷婷性爱综合| 六月婷婷影院| 狠狠 久久| 国产色网站| 色婷婷99| 大地9中文在线观看免费高清| www.狠狠干com| 亚洲在线播放| 久超超碰| 性爱AV天堂| 国产精品第一国产精品| 九九免费视频| 一起肏在线视频| 另类图片天天影视在线观看| 九九热这里只有精品556| 成人午夜天| 亚洲五月色| 久久伦乱| 综合色播| 日本性激情色播| 色婷在线视频| 玖玖婷婷色五月| 91人妻色色网| 久久久久久久久久久久久9| 99精吕视频在线观看了| 婷婷综合在线播放| 综合五月婷婷| 开心深爱五月天| 99欧美热| 成人AV中文字幕| 人人色人人摸人人看| 亚洲网在线观看| 国产精品日韩十五区| AV动漫不卡无码免费| 99∨VTV| 丁香五月综合亚洲| 91女人18毛片水多国产| 丁香五月婷婷视频| 久碰视频| 清纯唯美 激情四射| 九九在线精点品| 五月天激情国产综合婷婷婷就去爱| 午夜性做爰电影| 婷婷丁香五月天中文字幕| 久久婷网| 激情五月天综合网| 婷婷五月天激情网站| 婷婷午夜激情| 思思久久99热只有频精品66| 99久视频| VA婷婷| 亚洲成人av中文| 久久爱婷婷| 入口五月婷婷六月香| 99视频综合| 99九九精品视频| 日韩五月天婷婷| 国产小网站| 五月婷婷六月天| 色色网五月激情| 综合啪啪| 久久精品凹凸分类| 色综合大香蕉| 青青草蜜臀| 狠狠爱婷婷丁香| 99激情视频| 人妻内射视频| 99 re视频一区| 色狠狠色噜噜AV天堂五区| 六九色综合婷婷五月天| 五月花婷婷在线精品视频| 日本熟女啪啪| 99热这里有精力| 一级二级香港秋霞欧美欧美秋霞| 丁香婷婷色情| 男妓跪趴把舌头伸进我的嘴巴| 色五月婷激情| 91超碰在线观看| 免费视频WWW在线观看网站| 久久99网| 狠狠88综合久久久久噜噜噜| 日韩有码一区| 久久人妻视频| 涩五月丁香| 国产在线黄色| 操操综合网婷婷| 日本色色色| 另类综合国产| 色播六月| 免费日本aⅴ中文字幕| 天天狠天天叉| 丁香五月激情啪啪| 久久婷婷五月国产激情综合片| 天天干人人奸97| 大香蕉久| 五月综合婷婷久久在线| 91久久久久久久久久久| 九久久婷婷| 淫视馆AV在线| 激情色情五月天| 996热| Y11111111111少妇电影院| 五月天婷婷丁香| 九九热在线99| 天天摸天天舔天天爽| 激情av在线| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 国产九九一区二区三区| 成人精品视频99在线观看免费| 六月丁香激情| 丁香五月激情六月综合| 五月婷婷六月丁香综合| 九九综合九色欧美狠狠| 欧美色色色色色色| 五月婷婷狠天天色综合| 五月婷婷深深爱| 开心五月天激情网| 97色天堂| 亚洲久热无码| 久久丁香婷婷五月天| 日韩在线成人电影| 密着浓厚中出乚交尾GvG935| 中文字幕 码精品视频网站| 99乱视频| 白天AV月月| 97视频.干com| 996re热精品视频| 婷婷五月天小说| 97人凄人人操人人爽| 丁香五月婷婷天| 99热欧美在线观看| 婷婷六月视频| 五月丁香另类网| 五月天综合久久| 九九综合| 天天xxxxxx天天日| 成年AAAA色情| 成人精品人妻| 激情婷婷五月综合| 第四色在线观看| 狠狠综合网| 狠狠搞狠狠操| 五月丁香六月情亚洲| 婷婷五月亚洲激情| 久久久久8888| 人妻免费网站| 亚州美女| 九九热99热| 久久在线大香蕉| VfJxEwPH| 九九草热在线观看| 色很很96| 五月天操逼网| 免费在线观看av网站| 无码人妻少妇色欲AV一区二区| 九九五月天| nvrentiantang av| 丁香五月激情鲁| 日本五月丁香| 伊人春天av| 91干视频| 99热九九在线| 91在线资源| 午夜不卡久久精品无码免费| 久久伊人大香蕉| 日日夜夜天天| 这里有精品2| 色婷婷婷婷成人网| 五月丁香亚洲校园欧美| 日本在线视频播放91| 日韩啪啪视品| 精品国产乱码久久久久久免费| 五月天播播| 日韩久久视频| 99免费| 3www激情| 精品色色网| 久久色在线视频| 成人午夜免费电影| 综合99在线| 99热| 五月婷婷激情综合| 丁香九月激情| 9l视频自拍9l视频自拍九色学生| 五月婷婷中文字幕| 丁香九月婷婷色| 夜夜涩涩涩| 天天爽在线视频| 色色色婷婷五月天| 另类激情四射| 亚洲人人操| 成人 九九九九| 五月婷婷综合在线视频| 丁香五月之久操视频| 最近免费中文字幕大全高清大全1| 综合激情五月天| 婷婷精品免费久久| 播五月丁香三月婷婷| 六月丁香激情网| 久久久五月四色| 日本激情五月天‘| 婷婷五月开心中文字幕色| 久思思热视频在线观看| www久| 欧美六月| 激情五婷网| 激情婷婷五月| 国产白丝在线一区| 99ri国产精品| 色婷婷无吗| 男人的天堂在线婷婷| 成人AV播放| 亚洲欧美婷婷五月色综合| 人妻啪啪啪| 九九精品99| 九九综合九九| 91超碰九色| 亚洲第一黄网| 男女99免费视频| 欧美日朝成人| 99超级碰免费视频| 99久在线精品99re8热| 精品久久久人妻| 67194成I人在线观看线路1| 97干视频| 9久热| 人妻人人操| 天天日夜夜拍| 51国精产品自偷自偷综合| 亚洲九九视频| 五月亭亭开心网| 日本三级大片| 久久98| 国产小精品| 亚洲成人AV电影在线| 天天狠狠综合精区| 噢美99| 久久日本wwww色| 丁香社92视频| 97爱综合| 婷婷丁香成人五月天| 26uuu丁香婷婷五月| 外国碰视频网站97| 六月婷婷综合| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 婷婷五月天男人影院色色网| 密乳视频| 欧美激情综合色综合色| 噜噜久| 婷婷五月色丁香在线看| 五月天婷婷乱| 婷婷在线免费| 五月婷六月婷婷| 久久美女五月天| 婷婷五月天情色| 综合久久影院| 91色五月| 免费观看亚洲AV片| 色五月婷婷综合| 粉嫩AV久久一区二区三区| 91丁香综合| 色色综合五月| 九九热婷婷| 狠狠久久婷五月| 91超碰人人操| 99热这里只有精品在线免费| 天天日夜夜夜操操操操| 色五月婷婷天天操夜夜操| 天天婷婷| 久9无码视频| 深爱婷婷网| 天天干天天爽| 五月天操逼激情| se.久久视频在线观看| 人人九色| 无码色色色色色| 久久6这里只有精品| 国产色五月婷婷| 色婷婷久久综合中文久久一本| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 7EzOBIhNq85TO| 日本97在线观看| 91大屁股精品| www久| 激情五月综亚网| 久久66成人网站| 成人视频在线免费播放| 操一操干一干| BBWCUCKOLD精品熟妇| 日韩成人无码片| 五月丁香激情综合啪啪| 久久综合99| 五月天久久成人| 夜夜爽天天干| 久久WW| 人人爱人人草| 伊人网色婷婷五月天| 丁香五月电影院在线观看| 欧美99热| www.五月婷婷久久.com| 这里只有久久精99| 久综合色| www.婷婷| 96丁香婷婷九月蜜桃综合久久| 99热全是精品| 综合色播| 99惹精品视频| 亚洲丁香五月天视频| www.久久| 狠狠干五月| 色婷婷综合影院| 人妻久久做| 五月天俺去也| 玖玖爱综合网| 五月丁香在线| 91欧美日韩| 婷婷激情综合网| 中国AV性爱观看| 日本五月天激情| 精品人妻一区| 丁香久久| 91九色PORNY中文啦| 婷婷色色五月| 日日做天天操夜夜爽| 婷婷五月婷婷| 色九区| 熟妇天天综合| caop在线| 夜夜做天天爽| 五月婷婷六月丁香五月| 中文字幕成人| 最新日韩AV中文字幕| 五月天色色色| 最新激情五月天| 色婷婷丁香五月在线观看| 特级西西4444www无码| 久热精品免费视频4| 91久久精品无码一区二区三区| 五月综合激情图片 | 精品无码色| 美女五月狠狠| 五月丁香六月激情在线| 五月婷性爱| 欧美一级色| www.五月丁香av| 久热中文字幕| 色五月亚洲| 91丨九色丨白浆| 狠狠操天天操天天操| 婷婷色激情五月天| 亚洲天堂啪啪| 丁香六月婷| 管管補管管紱| 欧美日韩成人高清在线| 久久激情五月| 99日视频在线| 国产色色网址网站| 天天婷婷| 丁香五月成人| 热99玖玖99玖玖99九九| 日韩亚洲视频| 日本激情五月天‘| 丁香大香蕉| 以及AA大片看看| 激情婷婷| 天天日夜夜帕| 日韩成人电影AV| 五月天AV大香蕉| 六月色日韩| 天天插天天爽| 日本人妻伦在线中文字幕| 九九99热久久精品66中文字幕| 日本色婷婷综合| 99爱视频在线| 亚洲亚洲人成综合网络| 国产婷婷综合在线免费视频| 激情五月婷婷伊人| 97精品自拍| 婷婷中文综合网| 噜噜噜噜噜在线| www激情| 被强行糟蹋的女人A片| 狠狠色噜噜狠狠| 69午夜成人影片| 中文字幕av久久爽一区| 天天干天天av天天射 | 国产Va视频| WWW.桔色成人.COM| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 久久久婷| 免费看片在线观看| 色青青五月| 久99久热| 香蕉视频性爱BB做爱| 婷婷,五月天,丁香,第一| 激情五月丁香亭亭 | 人妻尝试久久久久久久久久久久| 九九Av| 六月色 亚洲| 思思99精品视频| 婷婷97碰碰| 亚洲日韩成人三级av| 深夜男女福利刺激影院一区完整| 停停五月丁香| 八戒青柠影视剧在线观看| 日本九九网| 丁香五月av在线| 超碰在线国产| 五月天色欧美| 狠狠色激情在线| 91黄操| 天天视频精品9| 婷婷五月天xxx| 超碰激情网| 人人操碰| 久久99热 这里有精品| 色婷婷视频在线| 色婷亚洲五月丁香| 丁香五月综合亚洲| 开心五月深爱五月| 香蕉久久六月| 丁香五月综合在线观看| 人妻丰满精品一区二区A片| 天天射综合网站| 天天天天操|