3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

从零开始编写自己的C#框架(16)——Web层后端父类

發布時間:2023/11/27 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从零开始编写自己的C#框架(16)——Web层后端父类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從零開始編寫自己的C#框架(16)——Web層后端父類

原文:從零開始編寫自己的C#框架(16)——Web層后端父類

  本章節講述的各個類是后端系統的核心之一,涉及到系統安全驗證、操作日志記錄、頁面與按鍵權限控制、后端頁面功能封裝等內容,希望學習本系列的朋友認真查看新增的類與函數,這對以后使用本框架進行開發時非常重要。

?

  1、父類(基類)的實現

  在開發后端首頁與相關功能頁面前,我們首先要實現的是所有頁面的基類(父類),將常用的功能都預先實現出來,而后面的相關UI類則直接繼承它,這樣就能簡單的自動實現了相關頁面功能,不用再每個頁面去編寫某些按鍵功能或其他一些功能,如果有特殊的需要,再重寫對應的功能類就可以了,對于常用功能,由于之前的邏輯層與數據層已使用模板生成好了,所以直接調用,這樣的話比如實現一個列表頁面的一些功能(如下圖),只需要簡單的在頁面控件使用指定名稱,那么一些實現代碼就不用再編寫了,這些控件自動擁有對應的功能,比如刷新、自動排序、保存排序(直接修改下圖中排序列的輸入框后點擊保存排序就可以了,這個功能不用編寫任何一個代碼,只需要將按鍵放到下圖位置,然后使用指定名稱就可以了)等功能。這樣操作將使我們后面的開發工作更加輕松。而對于列表的話,也只需要調用邏輯層函數直接綁定(bll.BindGrid(this, Grid1, Grid1.PageIndex + 1, Grid1.PageSize, InquiryCondition(), _order);)就可以實現列表、分頁、翻頁、排序等功能。當然列表點擊審核的√與×就會同步更改數據庫對應記錄的字段與圖標,也只需要在列表控件對應函數復制進簡單的幾行代碼就可以實現,這些會在后面相應章節中具體講述。

?  

  先上父類與接口代碼

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Web.UI;
  4 using DotNet.Utilities;
  5 using FineUI;
  6 using Solution.Logic.Managers;
  7 using Solution.Logic.Managers.Application;
  8 
  9 namespace Solution.Web.Managers.WebManage.Application
 10 {
 11     /// <summary>
 12     /// Web層頁面父類
 13     /// 本基類封裝了各種常用函數,c減少重復代碼的編寫
 14     /// </summary>
 15     public abstract class PageBase : System.Web.UI.Page, IPageBase
 16     {
 17         #region 定義對象
 18         //邏輯層接口對象
 19         protected ILogicBase bll = null;
 20         //定義列表對象
 21         private FineUI.Grid grid = null;
 22         //頁面排序容器
 23         List<string> sortList = null;
 24         #endregion
 25 
 26         #region 初始化函數
 27         protected override void OnInit(EventArgs e)
 28         {
 29             base.OnInit(e);
 30             
 31             //檢測用戶是否超時退出
 32             OnlineUsersBll.GetInstence().IsTimeOut();
 33 
 34             if (!IsPostBack)
 35             {
 36                 //檢測當前頁面是否有訪問權限
 37                 MenuInfoBll.GetInstence().CheckPagePower(this);
 38 
 39                 #region 設置頁面按鍵權限
 40                 //定義按鍵控件
 41                 Control btnControl = null;
 42                 try
 43                 {
 44                     //找到頁面放置按鍵控件的位置
 45                     ControlCollection controls = MenuInfoBll.GetInstence().GetToolBarControls(this.Controls);
 46                     //逐個讀取出來
 47                     for (int i = 0; i < controls.Count; i++)
 48                     {
 49                         //取出控件
 50                         btnControl = controls[i];
 51                         //判斷是否除了刷新、查詢和關閉以外的按鍵
 52                         if (btnControl.ID != "ButtonRefresh" && btnControl.ID != "ButtonSearch" && btnControl.ID != "ButtonClose" && btnControl.ID != "btnReset")
 53                         {
 54                             //是的話檢查該按鍵當前用戶是否有控件權限,沒有的話則禁用該按鍵
 55                             ((FineUI.Button)btnControl).Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, btnControl.ID);
 56                         }
 57                     }
 58                 }
 59                 catch (Exception) { }
 60                 #endregion
 61 
 62                 //記錄用戶當前所在的頁面位置
 63                 CommonBll.UserRecord(this);
 64             }
 65 
 66             //運行UI頁面初始化函數,子類繼承后需要重寫本函數,以提供給本初始化函數調用
 67             Init();
 68         }
 69         #endregion
 70 
 71         #region 接口函數,用于UI頁面初始化,給邏輯層對象、列表等對象賦值
 72 
 73         /// <summary>
 74         /// 接口函數,用于UI頁面初始化,給邏輯層對象、列表等對象賦值
 75         /// </summary>
 76         public abstract void Init();
 77 
 78         #endregion
 79 
 80         #region 頁面各種按鍵事件
 81 
 82         /// <summary>
 83         /// 刷新按鈕事件
 84         /// </summary>
 85         /// <param name="sender"></param>
 86         /// <param name="e"></param>
 87         protected void ButtonRefresh_Click(object sender, EventArgs e)
 88         {
 89             FineUI.PageContext.RegisterStartupScript("window.location.reload()");
 90         }
 91 
 92         /// <summary>
 93         /// 關閉
 94         /// </summary>
 95         /// <param name="sender"></param>
 96         /// <param name="e"></param>
 97         protected void ButtonClose_Click(object sender, EventArgs e)
 98         {
 99             PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
100 
101         }
102         /// <summary>
103         /// 查詢
104         /// </summary>
105         /// <param name="sender"></param>
106         /// <param name="e"></param>
107         protected void ButtonSearch_Click(object sender, EventArgs e)
108         {
109             LoadData();
110         }
111 
112         /// <summary>
113         /// 新增
114         /// </summary>
115         /// <param name="sender"></param>
116         /// <param name="e"></param>
117         protected void ButtonAdd_Click(object sender, EventArgs e)
118         {
119             Add();
120         }
121 
122         /// <summary>
123         /// 編輯
124         /// </summary>
125         /// <param name="sender"></param>
126         /// <param name="e"></param>
127         protected void ButtonEdit_Click(object sender, EventArgs e)
128         {
129             Edit();
130         }
131 
132         /// <summary>
133         /// 刪除
134         /// </summary>
135         /// <param name="sender"></param>
136         /// <param name="e"></param>
137         protected void ButtonDelete_Click(object sender, EventArgs e)
138         {
139             //執行刪除操作,返回刪除結果
140             string result = Delete();
141 
142             if (string.IsNullOrEmpty(result))
143                 return;
144             //彈出提示框
145             FineUI.Alert.ShowInParent(result, FineUI.MessageBoxIcon.Information);
146 
147             //重新加載頁面表格
148             LoadData();
149         }
150 
151 
152         /// <summary>
153         /// 保存數據
154         /// </summary>
155         /// <param name="sender"></param>
156         /// <param name="e"></param>
157         protected void ButtonSave_Click(object sender, EventArgs e)
158         {
159             //執行保存操作,返回保存結果
160             string result = Save();
161 
162             if (string.IsNullOrEmpty(result))
163             {
164                 PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
165                 FineUI.Alert.ShowInParent("保存成功", FineUI.MessageBoxIcon.Information);
166             }
167             else
168             {
169                 //by july,部分頁面保存后,必須刷新原頁面的,把返回的值用 "{url}" + 跳轉地址的方式傳過來
170                 if (StringHelper.Left(result, 5) == "{url}")
171                 {
172                     string url = result.Trim().Substring(6);
173                     FineUI.Alert.ShowInParent("保存成功", "", FineUI.MessageBoxIcon.Information, "self.location='" + url + "'");
174                 }
175                 else
176                 {
177                     FineUI.Alert.ShowInParent(result, FineUI.MessageBoxIcon.Information);
178                 }
179             }
180         }
181 
182         /// <summary>保存排序</summary>
183         /// <param name="sender"></param>
184         /// <param name="e"></param>
185         protected void ButtonSaveSort_Click(object sender, EventArgs e)
186         {
187             SaveSort();
188         }
189 
190         /// <summary>自動排序</summary>
191         /// <param name="sender"></param>
192         /// <param name="e"></param>
193         protected void ButtonSaveAutoSort_Click(object sender, EventArgs e)
194         {
195             //默認使用多級分類
196             SaveAutoSort();
197         }
198 
199         /// <summary>
200         /// 排序
201         /// </summary>
202         /// <param name="sender"></param>
203         /// <param name="e"></param>
204         protected void Grid1_Sort(object sender, FineUI.GridSortEventArgs e)
205         {
206             //生成排序關鍵字
207             Sort(e);
208             //刷新列表
209             LoadData();
210         }
211 
212         /// <summary>
213         /// 分頁
214         /// </summary>
215         /// <param name="sender"></param>
216         /// <param name="e"></param>
217         protected void Grid1_PageIndexChange(object sender, FineUI.GridPageEventArgs e)
218         {
219             if (grid != null)
220             {
221                 grid.PageIndex = e.NewPageIndex;
222 
223                 LoadData();
224             }
225         }
226         
227         /// <summary>
228         /// 關閉子窗口事件
229         /// </summary>
230         /// <param name="sender"></param>
231         /// <param name="e"></param>
232         protected virtual void Window1_Close(object sender, WindowCloseEventArgs e)
233         {
234             LoadData();
235         }
236 
237         /// <summary>
238         /// 關閉子窗口事件
239         /// </summary>
240         /// <param name="sender"></param>
241         /// <param name="e"></param>
242         protected virtual void Window2_Close(object sender, WindowCloseEventArgs e)
243         {
244             LoadData();
245         }
246 
247         /// <summary>
248         /// 關閉子窗口事件
249         /// </summary>
250         /// <param name="sender"></param>
251         /// <param name="e"></param>
252         protected virtual void Window3_Close(object sender, WindowCloseEventArgs e)
253         {
254             LoadData();
255         }
256         #endregion
257 
258         #region 虛函數,主要給頁面各種按鍵事件調用,子類需要使用到相關功能時必須將它實現
259 
260         /// <summary>
261         /// 加載事件
262         /// </summary>
263         public virtual void LoadData() { }
264 
265         /// <summary>
266         /// 添加記錄
267         /// </summary>
268         public virtual void Add() { }
269 
270         /// <summary>
271         /// 修改記錄
272         /// </summary>
273         public virtual void Edit() { }
274 
275         /// <summary>
276         /// 刪除記錄
277         /// </summary>
278         /// <returns>返回刪除結果</returns>
279         public virtual string Delete()
280         {
281             return null;
282         }
283 
284         /// <summary>
285         /// 保存數據
286         /// </summary>
287         /// <returns>返回保存結果</returns>
288         public virtual string Save()
289         {
290             return "";
291         }
292 
293         /// <summary>
294         /// 保存排序
295         /// </summary>
296         /// <returns>返回保存結果</returns>
297         public virtual void SaveSort()
298         {
299             //保存排序
300             if (grid != null && bll != null)
301             {
302                 //更新排序
303                 if (bll.UpdateSort(this, grid, "tbxOrderID"))
304                 {
305                     //重新加載列表
306                     LoadData();
307 
308                     Alert.ShowInParent("操作成功", "保存排序成功", "window.location.reload();");
309                 }
310                 else
311                 {
312                     Alert.ShowInParent("操作成失敗", "保存排序失敗", "window.location.reload();");
313                 }
314             }
315         }
316 
317         /// <summary>
318         /// 保存自動排序
319         /// </summary>
320         public virtual void SaveAutoSort()
321         {
322             if (bll == null)
323             {
324                 Alert.ShowInParent("保存失敗", "邏輯層對象為null,請聯系開發人員給當前頁面的邏輯層對象賦值");
325                 return;
326             }
327 
328             if (bll.UpdateAutoSort(this, "", true))
329             {
330                 Alert.ShowInParent("保存成功", "保存自動排序成功", "window.location.reload();");
331             }
332             else
333             {
334                 Alert.ShowInParent("保存失敗", "保存自動排序失敗", "window.location.reload();");
335             }
336         }
337 
338         /// <summary>
339         /// 生成排序關鍵字
340         /// </summary>
341         /// <param name="e"></param>
342         public virtual void Sort(FineUI.GridSortEventArgs e)
343         {
344             //處理排序
345             sortList = null;
346             sortList = new List<string>();
347             //排序列字段名稱
348             string sortName = "";
349 
350             if (e.SortField.Length > 0)
351             {
352                 //判斷是升序還是降序
353                 if (e.SortDirection != null && e.SortDirection.ToUpper() == "DESC")
354                 {
355                     sortList.Add(e.SortField + " desc");
356                 }
357                 else
358                 {
359                     sortList.Add(e.SortField + " asc");
360                 }
361                 sortName = e.SortField;
362             }
363             else
364             {
365                 //使用默認排序——主鍵列降序排序
366                 sortList.Add("Id desc");
367                 sortName = "Id";
368             }
369 
370             //利用反射的方式給頁面控件賦值
371             //查找指定名稱控件
372             var control = Page.FindControl("SortColumn");
373             if (control != null)
374             {
375                 //判斷是否是TextBox類型
376                 var type = control.GetType();
377                 if (type.FullName == "System.Web.UI.WebControls.TextBox")
378                 {
379                     //存儲排序列字段名稱
380                     ((TextBox)control).Text = sortName;
381                 }
382             }
383         }
384 
385         #endregion
386 
387     }
388 }
View Code
 1 namespace Solution.Web.Managers.WebManage.Application
 2 {
 3     /// <summary>
 4     /// UI頁面接口類——主要用于列表(Grid)頁
 5     /// </summary>
 6     public interface IPageBase
 7     {
 8         #region 用于UI頁面初始化,給邏輯層對象、列表等對象賦值,主要是列表(Grid)頁面使用
 9 
10         void Init();
11 
12         #endregion
13     }
14 }
View Code

  有朋友可能會有疑問,為什么本類要用abstract修飾成抽象類,而實現類中只有接口Init()函數是抽象函數,這樣設置主要是強制要求Init()函數在子類中必須實現,因為在開發過程中,不這樣強制的話,一些頁面開發時很容易忘記去給父類的相關對象賦值,那么父類中的一些功能在調用時就無法正常運行。

  代碼中的OnInit()函數,在頁面啟動的時候會調用到,主要用于檢查用戶登陸情況,用戶是否有當前頁面的訪問權限和頁面按鍵的使用權限,記錄用戶訪問記錄,以及運行UI頁面初始化函數,方便父類相關函數功能的調用(比如保存排序、分頁等功能)。

  另外,預先定義好了頁面各種常用按鍵事件,只要在頁面里放置這些按鍵,就可以自動調用這些事件功能,部分按鍵功能已實現的就不用再編寫代碼,未實現的則直接重寫對應的虛函數,就可以達到想要的效果。

  而虛函數,大多都沒有實現其功能的代碼,可能有朋友會說,為什么不用接口呢?呃......在這里再重新說明一下,定義成接口的話就必須要去實現,而對于多數頁面來說,并不一定要用到這個功能,那么這些頁面代碼看起來就很羅嗦,充斥大量無用代碼,可讀性就會非常的差,而用虛方法只是放在那里就可以了,需要使用時才去重寫,這樣操作會比較靈活,頁面代碼看起來也非常整潔干凈。

  由于下面不少功能都是重新溝思后編寫的,所以可能會存在一些不合理的地方,且未經過運行測試,以后會根據情況進行增刪。

  

?

  2、邏輯層添加了接口,且抽象類實現這個接口并增加對應的抽象函數

  為了方便上面父類的調用,減少重復代碼的編寫,在邏輯層增加了接口類ILogicBase,而原來的邏輯層抽象類LogicBase(所有模板都必須繼承的類)也實現了該接口

 1 using System.Collections.Generic;
 2 using System.Web.UI;
 3 using Solution.DataAccess.DbHelper;
 4 
 5 namespace Solution.Logic.Managers.Application
 6 {
 7     public interface ILogicBase
 8     {
 9         #region 綁定表格
10 
11         void BindGrid(FineUI.Grid grid, int pageIndex = 0, int pageSize = 0,
12             List<ConditionFun.SqlqueryCondition> wheres = null, List<string> orders = null);
13 
14         void BindGrid(FineUI.Grid grid, int parentValue,
15             List<ConditionFun.SqlqueryCondition> wheres = null, List<string> orders = null, string parentId = "ParentId");
16 
17         void BindGrid(FineUI.Grid grid, int parentValue, List<string> orders = null,
18             string parentId = "ParentId");
19 
20         #endregion
21 
22         #region 刪除記錄
23 
24         void Delete(Page page, int id);
25 
26         void Delete(Page page, int[] id);
27 
28         #endregion
29 
30         #region 保存排序
31 
32         bool UpdateSort(Page page, FineUI.Grid grid1, string tbxOrderId, string orderIdName = "OrderId");
33 
34         #endregion
35 
36         #region 自動排序
37 
38         bool UpdateAutoSort(Page page, string strWhere = "", bool isExistsMoreLv = false, int pid = 0,
39             string fieldName = "OrderId", string fieldParentId = "ParentId");
40 
41         #endregion
42     }
43 }
View Code
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq.Expressions;
 4 using System.Web.UI;
 5 using FineUI;
 6 using Solution.DataAccess.DbHelper;
 7 using Solution.Logic.Managers.Application;
 8 
 9 namespace Solution.Logic.Managers
10 {
11     /// <summary>
12     /// 邏輯層抽象類
13     /// </summary>
14     public abstract class LogicBase : ILogicBase
15     {
16         #region 清空緩存
17         /// <summary>清空緩存</summary>
18         public virtual void DelCache()
19         {
20 
21         }
22         #endregion
23         
24         #region 全表緩存加載條件
25         /// <summary>
26         /// 全表緩存加載條件——對于有些表并不用所有記錄都加載到緩存當中,這個時候就可以重寫本函數來實現每次加載時只加載指定的記錄到緩存中
27         /// </summary>
28         /// <typeparam name="T"></typeparam>
29         /// <returns></returns>
30         public virtual Expression<Func<T, bool>> GetExpression<T>()
31         {
32             return null;
33         }
34         #endregion
35 
36         #region 綁定表格
37         public abstract void BindGrid(FineUI.Grid grid, int pageIndex = 0, int pageSize = 0, List<ConditionFun.SqlqueryCondition> wheres = null, List<string> orders = null);
38 
39         public abstract void BindGrid(FineUI.Grid grid, int parentValue, List<ConditionFun.SqlqueryCondition> wheres = null, List<string> orders = null,
40             string parentId = "ParentId");
41 
42         public abstract void BindGrid(FineUI.Grid grid, int parentValue, List<string> orders = null, string parentId = "ParentId");
43         #endregion
44 
45         #region 刪除記錄
46         public abstract void Delete(Page page, int id);
47         public abstract void Delete(Page page, int[] id);
48         #endregion
49 
50         #region 保存排序
51         public abstract bool UpdateSort(Page page, Grid grid1, string tbxOrderId, string orderIdName = "OrderId");
52         #endregion
53 
54         #region 自動排序
55         public abstract bool UpdateAutoSort(Page page, string strWhere = "", bool isExistsMoreLv = false, int pid = 0,
56             string fieldName = "OrderId", string fieldParentId = "ParentId");
57         #endregion
58     }
59 }
View Code

  原來的模板根據需要也對應做出了相應調整

  我們在第1點時不是強制要求實現Init()函數嗎,這里就是主要為PageBase類(父類)的邏輯層接口賦值用的。

  比如我們要實現一個信息列表的功能,由于我們的邏輯層都繼承了ILogicBase類,所以我們只要在Init()函數中給PageBase類的protected ILogicBase bll = null;這個定義重新賦值就可以了,那么在執行下面代碼時就會通過這個接口的調用來執行對應類的功能

  在Init()初始化函數中,給邏輯層對象賦值例子

?

 1 using System;
 2 using Solution.Logic.Managers;
 3 using Solution.Web.Managers.WebManage.Application;
 4 
 5 namespace Solution.Web.Managers
 6 {
 7     public partial class WebForm1 : PageBase
 8     {
 9         protected void Page_Load(object sender, EventArgs e)
10         {
11 
12         }
13 
14 
15         #region 接口函數,用于UI頁面初始化,給邏輯層對象、列表等對象賦值
16         /// <summary>
17         /// 接口函數,用于UI頁面初始化,給邏輯層對象、列表等對象賦值
18         /// </summary>
19         public override void Init()
20         {
21             //給邏輯層對象賦值
22             bll = InformationBll.GetInstence();
23             //給表格賦值
24             grid = Grid1;
25         }
26         #endregion
27     }
28 }

?

?

  PageBase類執行邏輯層程序代碼——實際上這些代碼可以再次進行封裝成一個公共函數,不過都是用模板生成的,有變動不用一個個改就懶得再重構了

?

 1         /// <summary>
 2         /// 保存排序
 3         /// </summary>
 4         /// <returns>返回保存結果</returns>
 5         public virtual void SaveSort()
 6         {
 7             //保存排序
 8             if (grid != null && bll != null)
 9             {
10                 //更新排序
11                 if (bll.UpdateSort(this, grid, "tbxOrderID"))
12                 {
13                     //重新加載列表
14                     LoadData();
15 
16                     Alert.ShowInParent("操作成功", "保存排序成功", "window.location.reload();");
17                 }
18                 else
19                 {
20                     Alert.ShowInParent("操作成失敗", "保存排序失敗", "window.location.reload();");
21                 }
22             }
23         }
24 
25         /// <summary>
26         /// 保存自動排序
27         /// </summary>
28         public virtual void SaveAutoSort()
29         {
30             if (bll == null)
31             {
32                 Alert.ShowInParent("保存失敗", "邏輯層對象為null,請聯系開發人員給當前頁面的邏輯層對象賦值");
33                 return;
34             }
35 
36             if (bll.UpdateAutoSort(this, "", true))
37             {
38                 Alert.ShowInParent("保存成功", "保存自動排序成功", "window.location.reload();");
39             }
40             else
41             {
42                 Alert.ShowInParent("保存失敗", "保存自動排序失敗", "window.location.reload();");
43             }
44         }

?

?

?

  3、MenuInfoBll邏輯類

  它是后端所有頁面權限、頁面控件權限,以及頁面訪問鏈接加密處理的功能類

  它會將后端所有菜單與頁面記錄全部加載到緩存當中,優化后端檢查權限時的性能;

  用戶對后端頁面的所有訪問,都會經過CheckPagePower函數的處理,只要在系統中綁定了菜單與頁面,后端頁面開發時,就不必去考慮頁面權限,即不用對每個頁面的權限進行賦值,CheckPagePower函數會自動檢查并判斷用戶是否有訪問權限并做出相應處理;

  后端所有頁面的加密解密處理函數也在這里,所有訪問鏈接都需要加上對應的加密函數,不然該頁面無法正常訪問,這種功能可以使我們的后端在管理相關業務時,用戶不能通過復制頁面鏈接后修改鏈接參數中的Id訪問,以達到查看當前用戶查看無權限訪問的信息,防止業務信息被非常查看(當然也不是不能破解,這種算法將加大其難度),另外該鏈接只有當前瀏覽器上有效,通過復制發送給他人馬上失效。

  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using System.Linq;
  5 using System.Text;
  6 using System.Web;
  7 using System.Web.UI;
  8 using DotNet.Utilities;
  9 using Solution.DataAccess.DataModel;
 10 
 11 namespace Solution.Logic.Managers
 12 {
 13     /// <summary>
 14     /// MenuInfoBll邏輯類
 15     /// </summary>
 16     public partial class MenuInfoBll : LogicBase
 17     {
 18         /***********************************************************************
 19          * 自定義函數                                                          *
 20          ***********************************************************************/
 21 
 22         #region 自定義函數
 23 
 24         private const string const_CacheKey_Model = "Cache_MenuInfo_AllModel";
 25 
 26         #region 獲取MenuInfo全表內容并放到緩存中
 27 
 28         /// <summary>
 29         /// 取得MenuInfo全表內容——使用菜單地址做為KEY
 30         /// </summary>
 31         /// <returns>返回Hashtable</returns>
 32         public Hashtable GetHashtable()
 33         {
 34             //讀取記錄
 35             object obj = CacheHelper.GetCache(const_CacheKey_Model);
 36             //如果記錄不存在,則重新加載
 37             if (obj == null)
 38             {
 39                 //初始化全局菜單內容緩存
 40                 var ht = new Hashtable();
 41                 //獲取菜單表全部內容
 42                 var all = MenuInfo.All();
 43                 //遍歷讀取
 44                 foreach (var model in all)
 45                 {
 46                     //創建菜單實體
 47                     var menuinfo = new MenuInfo();
 48                     menuinfo.Id = model.Id;
 49                     menuinfo.Name = model.Name;
 50                     menuinfo.Url = model.Url;
 51                     menuinfo.ParentId = model.ParentId;
 52                     menuinfo.Depth = model.Depth;
 53 
 54                     try
 55                     {
 56                         //將菜單實體存入容器中
 57                         //使用頁面地址做為KEY
 58                         ht.Add(menuinfo.Url, menuinfo);
 59                     }
 60                     catch (Exception)
 61                     {
 62                     }
 63                 }
 64 
 65                 if (ht.Count > 0)
 66                 {
 67                     CacheHelper.SetCache(const_CacheKey_Model, ht);
 68                 }
 69 
 70                 return ht;
 71             }
 72             else
 73             {
 74                 return (Hashtable) obj;
 75             }
 76         }
 77 
 78         #endregion
 79 
 80         #region 清空緩存
 81 
 82         /// <summary>清空緩存</summary>
 83         public override void DelCache()
 84         {
 85             CacheHelper.RemoveOneCache(const_CacheKey_Model);
 86         }
 87 
 88         #endregion
 89 
 90         #region 根據菜單Url地址,獲取菜單相應內容
 91 
 92         /// <summary>
 93         /// 根據菜單Url地址,獲取菜單相應內容
 94         /// </summary>
 95         /// <param name="menuInfoUrl">頁面地址</param>
 96         /// <returns>返回菜單實體</returns>
 97         public MenuInfo GetMenuInfo(string menuInfoUrl)
 98         {
 99             try
100             {
101                 //從全局緩存中讀取菜單內容
102                 //獲取菜單實體
103                 return (MenuInfo) (MenuInfoBll.GetInstence().GetHashtable()[menuInfoUrl]);
104             }
105             catch (Exception)
106             {
107                 return new MenuInfo();
108             }
109         }
110 
111         #endregion
112 
113         #region 檢查頁面權限
114 
115         /// <summary>
116         /// 檢查當前菜單或頁面是否有權限訪問
117         /// </summary>
118         /// <param name="menuId">菜單ID</param>
119         /// <returns>真或假</returns>
120         public bool CheckPagePower(string menuId)
121         {
122             var pagePower = OnlineUsersBll.GetInstence().GetPagePower();
123             if (string.IsNullOrEmpty(pagePower) || menuId == "")
124             {
125                 return false;
126             }
127             //檢查是否有權限
128             if (
129                 pagePower.IndexOf("," + menuId + ",") >= 0)
130             {
131                 return true;
132             }
133             else
134             {
135                 return false;
136             }
137         }
138 
139         #endregion
140 
141         #region 檢查當前頁面控件是否有權限訪問
142 
143         /// <summary>
144         /// 檢查當前頁面控件是否有權限訪問
145         /// </summary>
146         /// <param name="page">頁面指針</param>
147         /// <param name="controlName">控件名稱</param>
148         /// <returns>真或假</returns>
149         public bool CheckControlPower(Page page, string controlName)
150         {
151             //獲取當前訪問頁面的URL
152             var currentPage = page.Request.Url.AbsolutePath;
153             //獲取當前用戶所有可以訪問的頁面ID
154             var menuId = GetMenuInfo(currentPage).Id;
155             //判斷全局緩存中是否存儲了該控件ID,否的話表示該控件沒有權限
156             if (PagePowerSignPublicBll.GetInstence().GetHashtable()[controlName] == null)
157             {
158                 return false;
159             }
160             else
161             {
162                 var controlPower = OnlineUsersBll.GetInstence().GetControlPower();
163                 if (string.IsNullOrEmpty(controlPower))
164                 {
165                     return false;
166                 }
167                 //獲取當前控件ID
168                 string ppsID = PagePowerSignPublicBll.GetInstence().GetHashtable()[controlName].ToString();
169 
170                 //檢查是否有權限
171                 if (controlPower.IndexOf("," + menuId + "|" + ppsID + ",") >= 0)
172                 {
173                     return true;
174                 }
175                 else
176                 {
177                     return false;
178                 }
179 
180             }
181 
182         }
183 
184         #endregion
185 
186         #region 判斷當前用戶是否有當前頁面操作權限
187 
188         /// <summary>
189         /// 判斷當前用戶是否有本頁面的操作權限
190         /// </summary>
191         /// <returns></returns>
192         public void CheckPagePower(Page page)
193         {
194             try
195             {
196                 //獲取當前訪問頁面的名稱
197                 var currentPage = page.Request.Url.AbsolutePath;
198                 if (currentPage.Equals("/WebManage/Main.aspx"))
199                     return;
200 
201                 //檢查是否從正確路徑進入
202                 ChichPageEncrypt(page);
203 
204 
205                 //獲取當前用戶所有可以訪問的頁面ID
206                 var menuId = GetMenuInfo(currentPage).Id + "";
207 
208                 if (!CheckPagePower(menuId))
209                 {
210                     //添加用戶訪問記錄
211                     UseLogBll.GetInstence().Save(page, "{0}沒有權限訪問【{1}】頁面");
212 
213                     page.Response.Write("您沒有訪問該頁面的權限!");
214                     page.Response.End();
215                     return;
216                 }
217 
218             }
219             catch (Exception)
220             {
221                 //添加用戶訪問記錄
222                 UseLogBll.GetInstence().Save(page, "{0}沒有權限訪問【{1}】頁面");
223 
224                 page.Response.Write("您沒有訪問該頁面的權限!");
225                 page.Response.End();
226                 return;
227             }
228         }
229 
230         #endregion
231 
232         #region 頁面訪問加密--檢查用戶是否從正確的路徑進入本頁面
233 
234         /// <summary>
235         /// 設置頁面加密--用于檢查用戶是否從正確的路徑進入本頁面
236         /// </summary>
237         /// <param name="key">頁面加密的Key</param>
238         /// <returns>加密后的字符串</returns>
239         public string SetPageEncrypt(string key)
240         {
241             //當前用戶md5
242             var md5 = OnlineUsersBll.GetInstence().GetMd5();
243             //加密:md5+Key
244             var encrypt = DotNet.Utilities.Encrypt.Md5(md5 + key);
245             //再次加密:Key + Encrypt
246             return Encrypt.Md5(key + encrypt);
247         }
248 
249         /// <summary>
250         /// 檢查用戶是否從正確的路徑進入本頁面,默認KEY為ID
251         /// </summary>
252         public void CheckPageEncrypt(Page page)
253         {
254             //當前用戶md5
255             var md5 = OnlineUsersBll.GetInstence().GetMd5();
256             //Key,如果沒有傳遞Key這個變量過來的,就讀取id或ParentID做為Key使用
257             var key = HttpContext.Current.Request["Id"];
258             if (string.IsNullOrEmpty(key))
259             {
260                 key = HttpContext.Current.Request["pid"];
261             }
262             if (string.IsNullOrEmpty(key))
263             {
264                 key = HttpContext.Current.Request["ParentId"];
265             }
266             if (string.IsNullOrEmpty(key))
267             {
268                 key = HttpContext.Current.Request["Key"];
269             }
270             //上一鏈接傳過來的加密數據
271             var keyEncrypt = HttpContext.Current.Request["KeyEncrypt"];
272 
273             //加密:md5+Key
274             var encrypt = Encrypt.Md5(md5 + key);
275             //再次加密:Key + Encrypt
276             encrypt = Encrypt.Md5(key + encrypt);
277 
278             //檢查是否有權限,沒有權限的直接終止當前頁面的運行
279             if (keyEncrypt != encrypt || string.IsNullOrEmpty(key))
280             {
281                 try
282                 {
283                     //添加用戶訪問記錄
284                     UseLogBll.GetInstence().Save(page, "{0}沒有權限訪問【{1}】頁面");
285                 }
286                 catch (Exception)
287                 {
288                 }
289 
290                 HttpContext.Current.Response.Write("你從錯誤的路徑進入當前頁面!");
291                 HttpContext.Current.Response.End();
292             }
293         }
294 
295         /// <summary>
296         /// 組成URL加密參數字符串
297         /// </summary>
298         /// <param name="key">頁面加密的Key</param>
299         /// <returns>組成URL加密參數字符串</returns>
300         public string PageUrlEncryptString(string key)
301         {
302             return "KeyEncrypt=" + SetPageEncrypt(key) + "&Key=" + key;
303         }
304 
305         /// <summary>
306         /// 組成URL加密參數字符串,使用隨機生成的Key,如果頁面傳的參數中包含有ID這個名稱的,則不能使用本函數
307         /// </summary>
308         /// <returns>組成URL加密參數字符串</returns>
309         public string PageUrlEncryptString()
310         {
311             var key = RandomHelper.GetRandomCode(null, 12);
312             return "KeyEncrypt=" + SetPageEncrypt(key) + "&Id=" + key;
313         }
314 
315         /// <summary>
316         /// 組成URL加密參數字符串——返回不帶Key的字符串
317         /// </summary>
318         /// <param name="key">頁面加密的Key</param>
319         /// <returns>組成URL加密參數字符串——不帶Key</returns>
320         public string PageUrlEncryptStringNoKey(string key)
321         {
322             return "KeyEncrypt=" + SetPageEncrypt(key);
323         }
324 
325         /// <summary>和 PageBase.BtnSave_Click 對應,部分頁面刷新后不關閉原頁面,并要刷新的情況下使用</summary>
326         /// <param name="url">跳轉的url</param>
327         /// <returns></returns>
328         public string PageSaveReturnUrlFlash(string url)
329         {
330             url = DirFileHelper.GetFilePath(HttpContext.Current.Request.Path) + "/" + url;
331             return "{url}" + url;
332         }
333 
334         #endregion
335 
336         #region 從頁面中找到放置按鍵控件的位置
337 
338         /// <summary>
339         /// 從頁面中找到放置按鍵控件的位置
340         /// </summary>
341         /// <param name="controls"></param>
342         /// <returns></returns>
343         public ControlCollection GetToolBarControls(ControlCollection controls)
344         {
345             if (controls == null)
346                 return null;
347 
348             ControlCollection c = null;
349             try
350             {
351                 for (int i = 0; i < controls.Count; i++)
352                 {
353                     if (controls[i].ID == "toolBar")
354                     {
355                         return controls[i].Controls;
356                     }
357                     c = GetToolBarControls(controls[i].Controls);
358                     if (c != null)
359                         return c;
360                 }
361             }
362             catch (Exception)
363             {
364             }
365 
366             return c;
367         }
368 
369         #endregion
370 
371         #endregion 自定義函數
372     }
373 }
View Code

  看看效果:

  這個是編輯頁面的路徑,KeyEncrypt參數值就是加密后的字串

  

  將地址復制出來在同一個瀏覽器換個標簽訪問,修改Id參數,加密串不變時,顯示沒權限訪問

  

  換個瀏覽器使用同樣的鏈接訪問效果

  

?

  4、OnlineUsersBll邏輯類

  它是后端所有在線緩存、列表數據讀寫操作的功能類

  主要功能大家自己研究吧,由于未經過運行測試,后面開發時可能會對一些函數進行比較大的修改。

  1 using System;
  2 using System.Collections;
  3 using System.Collections.Generic;
  4 using System.Web;
  5 using System.Web.UI;
  6 using DotNet.Utilities;
  7 using FineUI;
  8 using Solution.DataAccess.DataModel;
  9 
 10 namespace Solution.Logic.Managers
 11 {
 12 
 13     /// <summary>
 14     /// OnlineUsersBll邏輯類
 15     /// </summary>
 16     public partial class OnlineUsersBll : LogicBase
 17     {
 18         /***********************************************************************
 19          * 自定義函數                                                          *
 20          ***********************************************************************/
 21         #region 自定義函數
 22 
 23         #region 加載數據庫記錄到緩存
 24         private static readonly object LockObject = new object();
 25         /// <summary>
 26         /// 加載數據庫記錄到緩存
 27         /// </summary>
 28         public void Load()
 29         {
 30             lock (LockObject)
 31             {
 32                 //判斷緩存中["OnlineUsers"]是否存在,不存在則嘗試加載數據庫中的在線表
 33                 if (CacheHelper.GetCache("OnlineUsers") == null)
 34                 {
 35                     //將當前用戶信息添加到Hashtable中
 36                     var onlineUsers = new Hashtable();
 37 
 38                     //不存在則嘗試加載數據庫中的在線表到緩存中
 39                     var list = GetList();
 40                     if (list != null && list.Count > 0)
 41                     {
 42                         foreach (var model in list)
 43                         {
 44                             try
 45                             {
 46                                 onlineUsers.Add(model.UserHashKey, model);
 47                             }
 48                             catch
 49                             {
 50                             }
 51                         }
 52 
 53                         //將在線列表(Hashtable)添中進系統緩存中
 54                         CacheHelper.SetCache("OnlineUsers", onlineUsers);
 55                     }
 56                 }
 57             }
 58         }
 59         #endregion
 60 
 61         #region 獲取在線用戶表內容
 62         /// <summary>
 63         /// 根據字段名稱,獲取當前用戶在線表中的內容
 64         /// </summary>
 65         /// <param name="colName">字段名<para/>
 66         /// 可選參數<para/>
 67         /// UserId : 當前用戶的ID編號<para/>
 68         /// LoginDate : 登錄時間<para/>
 69         /// OnlineTime : 在線時長<para/>
 70         /// LoginIp : 當前用戶IP<para/>
 71         /// LoginName : 當前用戶登陸名<para/>
 72         /// CName : 當前用戶中文名<para/>
 73         /// Sex : 當前用戶的性別<para/>
 74         /// BranchId : 部門自動ID<para/>
 75         /// BranchCode : 部門編碼<para/>
 76         /// BranchName : 部門名稱<para/>
 77         /// PositionInfoId : 職位ID<para/>
 78         /// PositionInfoName : 職位名稱<para/>
 79         /// </param>
 80         /// <returns></returns>
 81         public object GetUserOnlineInfo(string colName)
 82         {
 83             return GetUserOnlineInfo(null, colName);
 84         }
 85         /// <summary>
 86         /// 根據字段名稱,獲取指定用戶在線表中的內容
 87         /// </summary>
 88         /// <param name="userHashKey">用戶在線列表的Key</param>
 89         /// <param name="colName">字段名<para/>
 90         /// userId : 當前用戶的ID編號<para/>
 91         /// LoginDate : 登錄時間<para/>
 92         /// OnlineTime : 在線時長<para/>
 93         /// LoginIp : 當前用戶IP<para/>
 94         /// LoginName : 當前用戶登陸名<para/>
 95         /// CName : 當前用戶中文名<para/>
 96         /// Sex : 當前用戶的性別<para/>
 97         /// BranchId : 部門自動ID<para/>
 98         /// BranchCode : 部門編碼<para/>
 99         /// BranchName : 部門名稱<para/>
100         /// PositionInfoId : 職位ID<para/>
101         /// PositionInfoName : 職位名稱<para/>
102         /// </param>
103         /// <returns></returns>
104         public object GetUserOnlineInfo(string userHashKey, string colName)
105         {
106             //由于GetUserHashKey有可能從
107 
108             try
109             {
110                 if (colName == "")
111                 {
112                     return null;
113                 }
114 
115                 if (userHashKey == null)
116                 {
117                     userHashKey = GetUserHashKey() +"";
118                 }
119 
120                 //如果不存在在線表則退出
121                 if (HttpRuntime.Cache["OnlineUsers"] == null || userHashKey == "")
122                     return null;
123 
124                 //返回指定字段的內容
125                 var model = (DataAccess.Model.OnlineUsers)((Hashtable) CacheHelper.GetCache("OnlineUsers"))[userHashKey];
126 
127                 return GetFieldValue(model, colName);
128             }
129             catch (Exception e)
130             {
131                 CommonBll.WriteLog("", e);
132             }
133 
134             return null;
135         }
136         #endregion
137 
138         #region 更新在線用戶信息
139         /// <summary>
140         /// 更新在線用戶信息
141         /// </summary>
142         /// <param name="userId">用戶ID,即在線用戶表中的KEY</param>
143         /// <param name="colName">要更新的字段名稱</param>
144         /// <param name="value">將要賦的值</param>
145         public void UpdateUserOnlineInfo(string userId, string colName, object value)
146         {
147             try
148             {
149                 ((Dictionary<String, object>)((Hashtable)CacheHelper.GetCache("OnlineUsers"))[userId])[colName] = value;
150             }
151             catch (Exception) { }
152         }
153         #endregion
154 
155         #region 獲取在線人數
156         /// <summary>
157         /// 獲取在線人數
158         /// </summary>
159         /// <returns></returns>
160         public int GetUserOnlineCount()
161         {
162             return ((Hashtable)CacheHelper.GetCache("OnlineUsers")).Count;
163         }
164         #endregion
165 
166         #region 更新在線人數
167         /// <summary>
168         /// 更新在線人數,將不在線人員刪除
169         /// </summary>
170         public void UpdateUserOnlineCount()
171         {
172             //獲取在線列表
173             var onlineUsers = (Hashtable)CacheHelper.GetCache("OnlineUsers");
174 
175             //如果不存在在線表則退出
176             if (onlineUsers == null)
177                 return;
178 
179             //初始化下線用戶KEY存儲數組
180             var users = new string[onlineUsers.Count];
181             int i = 0;
182 
183             //循環讀取在線信息
184             foreach (DictionaryEntry de in onlineUsers)
185             {
186                 //判斷該用戶是否在線,不在線的話則將它暫停存儲起來
187                 if (CacheHelper.GetCache("OnlineUsers_" + de.Key) == null)
188                 {
189                     users[i] = de.Key + "";
190                     i++;
191                 }
192             }
193 
194             //移除在線數據
195             for (int j = 0; j < users.Length; j++)
196             {
197                 if (users[j] == null)
198                     break;
199 
200                 //添加用戶下線記錄
201                 LoginLogBll.GetInstence().Save(users[j], "用戶【{0}】退出系統!在線時間【{1}】");
202                 //將HashTable里存儲的前一登陸帳戶移除
203                 Delete(null, x => x.UserHashKey == users[j]);
204                 //移除在線用戶
205                 RemoveUser(users[j]);
206             }
207         }
208         #endregion
209 
210         #region 刪除在線緩存中的用戶
211         /// <summary>
212         /// 刪除在線緩存中的用戶
213         /// </summary>
214         /// <param name="userHashKey"></param>
215         public void RemoveUser(string userHashKey)
216         {
217             //獲取在線列表
218             var onlineUsers = (Hashtable)CacheHelper.GetCache("OnlineUsers");
219 
220             //如果不存在在線表則退出
221             if (onlineUsers == null)
222                 return;
223 
224             //移除在線用戶
225             onlineUsers.Remove(userHashKey);
226         }
227         #endregion
228 
229         #region 判斷用戶是否被強迫離線
230         /// <summary>
231         /// 判斷用戶是否被強迫離線[true是;false否](由于用戶長時間沒有操作系統自動剔除用戶節省資源,管理人員剔除下線)
232         /// </summary>
233         public bool IsOffline(Page page)
234         {
235             try
236             {
237                 //獲取當前用戶Id
238                 var userinfoId = GetManagerId();
239                 //獲取用戶Key
240                 var userHashKey = GetUserHashKey();
241 
242                 //判斷當前用戶是否已經被系統清出
243                 if (userinfoId == 0 || HttpRuntime.Cache.Get("OnlineUsers_" + userHashKey) == null)
244                 {
245                     //通知用戶
246                     FineUI.Alert.Show("您太久沒有操作已退出系統,請重新登錄!", "檢測通知", MessageBoxIcon.Information, "window.location.href='/WebManage/Login.aspx';");
247                     return true;
248                 }
249                 else
250                 {
251                     //判斷在線用戶的Md5與當前用戶存儲的Md5是否一致
252                     if (GenerateMd5() != CookieHelper.GetCookieValue(OnlineUsersTable.Md5))
253                     {
254                         CommonBll.WriteLog("當前帳號已經下線,用戶Id【" + userinfoId + "");
255 
256                         //通知用戶
257                         FineUI.Alert.Show("您的賬號已經在另一處登錄,當前賬號已經下線!", "檢測通知", MessageBoxIcon.Information, "window.location.href='/WebManage/Login.aspx';");
258                         return true;
259                     }
260                 }
261                 return false;
262             }
263             catch (Exception ex)
264             {
265                 CommonBll.WriteLog("Logic.Systems.Manager.CheckIsOffline出現異常", ex);
266 
267                 FineUI.Alert.Show("系統已經開始更新維護,請稍后重新登錄!", "檢測通知", MessageBoxIcon.Information, "window.location.href='/WebManage/Login.aspx';");
268                 return true;
269             }
270 
271         }
272         #endregion
273 
274         #region 判斷用戶是否超時退出
275 
276         /// <summary>
277         /// 判斷用戶是否超時退出(退出情況:1.系統更新,2.用戶自動退出)
278         /// </summary>
279         public void IsTimeOut()
280         {
281             if (HttpContext.Current.Session == null || GetUserHashKey() == null)
282             {
283                 try
284                 {
285                     //不存在則表示Session失效了,重新從Cookies中加載
286                     var userHashKey = CookieHelper.GetCookieValue(OnlineUsersTable.UserHashKey);
287                     var md5 = CookieHelper.GetCookieValue(OnlineUsersTable.Md5);
288 
289                     //判斷Cookies是否存在,存在則查詢在線列表,重新獲取用戶信息
290                     if (userHashKey.Length > 0 && md5.Length == 32)
291                     {
292                         //讀取當前用戶在線實體
293                         var model = GetModelForCache(x => x.UserHashKey == userHashKey);
294                         //當前用戶存在在線列表中
295                         if (model != null)
296                         {
297                             //計算用戶md5值
298                             var key = GenerateMd5(model);
299 
300                             //判斷用戶的md5值是否正確
301                             if (md5 == key)
302                             {
303                                 //將UserHashKey存儲到緩存中
304                                 HttpContext.Current.Session[OnlineUsersTable.UserHashKey] = userHashKey;
305                                 //獲取用戶權限并存儲到用戶Session里
306                                 PositionBll.GetInstence().SetUserPower(model.Position_Id);
307                                 //更新用戶當前SessionId到在線表中
308                                 //UpdateUserOnlineInfo(model.Id + "", OnlineUsersTable.SessionId, HttpContext.Current.Session.SessionID);
309 
310                                 //加載用戶相關信息完畢,退出超時檢查
311                                 return;
312                             }
313                         }
314                     }
315                 }
316                 catch (Exception e)
317                 {
318                     //出現異常,保存出錯日志信息
319                     CommonBll.WriteLog("", e);
320                 }
321                 
322                 
323                 //用戶不存在,直接退出
324                 FineUI.Alert.Show("當前用戶登錄已經過時或系統已更新,請重新登錄!", "檢測通知", MessageBoxIcon.Information, "window.location.href='/WebManage/Login.aspx';");
325                 HttpContext.Current.Response.End();
326             }
327         }
328         #endregion
329 
330         #region 生成加密串——用戶加密密鑰計算
331         /// <summary>
332         /// 生成加密串——用戶加密密鑰計算
333         /// </summary>
334         /// <param name="model">在線實體</param>
335         /// <returns></returns>
336         public string GenerateMd5(DataAccess.Model.OnlineUsers model)
337         {
338             if (model == null)
339             {
340                 return RandomHelper.GetRndKey();
341             }
342             else
343             {
344                 //Md5(密鑰+登陸帳號+密碼+IP+密鑰.Substring(6,8))
345                 return Encrypt.Md5(model.UserKey + model.Manager_LoginName + model.Manager_LoginPass +
346                             IpHelper.GetUserIp() + model.UserKey.Substring(6, 8));
347             }
348         }
349 
350         /// <summary>
351         /// 生成加密串——用戶加密密鑰計算,直接讀取當前用戶實體
352         /// </summary>
353         /// <returns></returns>
354         public string GenerateMd5()
355         {
356             //讀取當前用戶實體
357             var model = GetModelForCache(GetManagerId());
358             return GenerateMd5(model);
359         }
360         #endregion
361 
362         #region 獲取用戶ID
363         /// <summary>
364         /// 從Session中讀取用戶ID,如果Session為Null時,返回0
365         /// </summary>
366         /// <returns></returns>
367         public int GetManagerId()
368         {
369             return ConvertHelper.Cint0(GetUserOnlineInfo(OnlineUsersTable.Manager_Id));
370         }
371         #endregion
372 
373         #region 獲取用戶中文名稱
374         /// <summary>
375         /// 從Session中讀取用戶中文名稱,如果Session為Null時,返回""
376         /// </summary>
377         /// <returns></returns>
378         public string GetManagerCName()
379         {
380             return GetUserOnlineInfo(OnlineUsersTable.Manager_CName) + "";
381         }
382         #endregion
383 
384         #region 獲取用戶UserHashKey
385         /// <summary>
386         /// 獲取用戶UserHashKey
387         /// </summary>
388         /// <returns></returns>
389         public object GetUserHashKey()
390         {
391             //讀取Session中存儲的UserHashKey值
392             var userHashKey = HttpContext.Current.Session[OnlineUsersTable.UserHashKey];
393             //如果為null
394             if (userHashKey == null)
395             {
396                 //為null則表示用戶Session過期了,所以要檢查用戶登陸,避免用戶權限問題
397                 IsTimeOut();
398 
399                 //從Cookies中讀取
400                 userHashKey = CookieHelper.GetCookieValue(OnlineUsersTable.UserHashKey);
401                 //不為null時,重新存儲到Session中
402                 if (userHashKey != null)
403                 {
404                     HttpContext.Current.Session[OnlineUsersTable.UserHashKey] = userHashKey;
405                 }
406             }
407             return userHashKey;
408         }
409         #endregion
410 
411         #region 獲取用戶加密串——用戶加密密鑰Md5值
412         /// <summary>
413         /// 獲取用戶加密串——用戶加密密鑰Md5值
414         /// </summary>
415         /// <returns></returns>
416         public object GetMd5()
417         {
418             //讀取Session中存儲的Md5值
419             var md5 = HttpContext.Current.Session[OnlineUsersTable.Md5];
420             //如果為null
421             if (md5 == null)
422             {
423                 //為null則表示用戶Session過期了,所以要檢查用戶登陸,避免用戶權限問題
424                 IsTimeOut();
425 
426                 //從Cookies中讀取
427                 md5 = CookieHelper.GetCookieValue(OnlineUsersTable.Md5);
428                 //不為null時,重新存儲到Session中
429                 if (md5 != null)
430                 {
431                     HttpContext.Current.Session[OnlineUsersTable.Md5] = md5;
432                 }
433             }
434             return md5;
435         }
436         #endregion
437         
438         #region 獲取用戶頁面操作權限
439         /// <summary>
440         /// 獲取用戶頁面操作權限
441         /// </summary>
442         /// <returns></returns>
443         public string GetPagePower()
444         {
445             //讀取Session中存儲的PagePower值
446             var pagePower = HttpContext.Current.Session[PositionTable.PagePower];
447             //如果為null
448             if (pagePower == null)
449             {
450                 //獲取用戶權限并存儲到用戶Session里
451                 PositionBll.GetInstence().SetUserPower(GetUserOnlineInfo(OnlineUsersTable.Position_Id) + "");
452             }
453             pagePower = HttpContext.Current.Session[PositionTable.PagePower];
454             return pagePower + "";
455         }
456         #endregion
457 
458         #region 獲取用戶頁面控件(按鍵)操作權限
459         /// <summary>
460         /// 獲取用戶頁面控件(按鍵)操作權限
461         /// </summary>
462         /// <returns></returns>
463         public string GetControlPower()
464         {
465             //讀取Session中存儲的ControlPower值
466             var controlPower = HttpContext.Current.Session[PositionTable.ControlPower];
467             //如果為null
468             if (controlPower == null)
469             {
470                 //獲取用戶權限并存儲到用戶Session里
471                 PositionBll.GetInstence().SetUserPower(GetUserOnlineInfo(OnlineUsersTable.Position_Id) + "");
472             }
473             controlPower = HttpContext.Current.Session[PositionTable.ControlPower];
474             return controlPower + "";
475         }
476         #endregion
477 
478         #endregion 自定義函數
479     }
480 }
View Code

?

? 點擊下載:

Web層后端父類.rar

?由于本解決方案開發時沒有經過調試,所以存在一些小BUG,這些會在下一章節發布的代碼中解決,大家先自行熟悉一下代碼與結構就可以了

?

?

?

?版權聲明:

  本文由AllEmpty原創并發布于博客園,歡迎轉載,未經本人同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如有問題,可以通過1654937@qq.com 聯系我,非常感謝。

?

  發表本編內容,只要主為了和大家共同學習共同進步,有興趣的朋友可以加加Q群:327360708 ,大家一起探討。

?

  更多內容,敬請觀注博客:http://www.cnblogs.com/EmptyFS/

?

posted on 2014-06-17 12:56 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/3792554.html

總結

以上是生活随笔為你收集整理的从零开始编写自己的C#框架(16)——Web层后端父类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国内少妇偷人精品视频 | 性色欲网站人妻丰满中文久久不卡 | 亚洲无人区午夜福利码高清完整版 | 无码中文字幕色专区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 人妻人人添人妻人人爱 | 东京一本一道一二三区 | 在线成人www免费观看视频 | 超碰97人人做人人爱少妇 | 风流少妇按摩来高潮 | 免费观看又污又黄的网站 | 日本熟妇人妻xxxxx人hd | 4hu四虎永久在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 日韩视频 中文字幕 视频一区 | 亚洲日本va中文字幕 | 色偷偷人人澡人人爽人人模 | 国产综合色产在线精品 | 日本大香伊一区二区三区 | 三级4级全黄60分钟 | 国产性生交xxxxx无码 | 免费网站看v片在线18禁无码 | 国产在线精品一区二区高清不卡 | 捆绑白丝粉色jk震动捧喷白浆 | 伦伦影院午夜理论片 | 久久综合狠狠综合久久综合88 | 国产乡下妇女做爰 | 99久久人妻精品免费一区 | 国产电影无码午夜在线播放 | 一区二区三区高清视频一 | 亚洲热妇无码av在线播放 | 亚洲综合色区中文字幕 | 午夜精品久久久久久久久 | а天堂中文在线官网 | 性欧美疯狂xxxxbbbb | 亚洲成av人在线观看网址 | 妺妺窝人体色www在线小说 | 久久久久久久久蜜桃 | 亚洲人成网站在线播放942 | 色欲av亚洲一区无码少妇 | 精品无码国产一区二区三区av | 国产特级毛片aaaaaa高潮流水 | 爆乳一区二区三区无码 | 国产婷婷色一区二区三区在线 | 性欧美videos高清精品 | 亚洲午夜福利在线观看 | 在线欧美精品一区二区三区 | 亚洲七七久久桃花影院 | 日本熟妇乱子伦xxxx | 夜夜高潮次次欢爽av女 | 18黄暴禁片在线观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 久久zyz资源站无码中文动漫 | 亚洲人成网站色7799 | 国产一区二区三区影院 | 国产在线一区二区三区四区五区 | 国产热a欧美热a在线视频 | 亚洲va中文字幕无码久久不卡 | 色综合久久久无码网中文 | 国产麻豆精品一区二区三区v视界 | 亚洲精品中文字幕久久久久 | 色综合久久久久综合一本到桃花网 | 亚洲精品久久久久中文第一幕 | 国产人妻大战黑人第1集 | 我要看www免费看插插视频 | 中文久久乱码一区二区 | 亚洲中文字幕av在天堂 | 99久久人妻精品免费一区 | 久久久中文久久久无码 | 亚洲狠狠色丁香婷婷综合 | 永久黄网站色视频免费直播 | 国内少妇偷人精品视频免费 | 欧洲vodafone精品性 | 亚洲一区二区三区含羞草 | 麻豆国产丝袜白领秘书在线观看 | 色欲久久久天天天综合网精品 | 自拍偷自拍亚洲精品被多人伦好爽 | 男女作爱免费网站 | 亚洲色欲色欲欲www在线 | 亚洲综合无码久久精品综合 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲综合久久一区二区 | 亚洲色在线无码国产精品不卡 | 欧美成人免费全部网站 | 亚洲の无码国产の无码影院 | 国产午夜手机精彩视频 | 国产亚洲日韩欧美另类第八页 | 午夜精品一区二区三区在线观看 | 内射巨臀欧美在线视频 | 国产激情精品一区二区三区 | 国产另类ts人妖一区二区 | 国色天香社区在线视频 | 国产亲子乱弄免费视频 | 黑人巨大精品欧美一区二区 | 三级4级全黄60分钟 | 亚洲精品午夜国产va久久成人 | 老熟女乱子伦 | 牲欲强的熟妇农村老妇女视频 | 日本精品高清一区二区 | 亚洲а∨天堂久久精品2021 | 亚洲国产午夜精品理论片 | 亚洲 a v无 码免 费 成 人 a v | 亚洲经典千人经典日产 | 蜜桃av抽搐高潮一区二区 | 人人妻人人澡人人爽欧美一区 | 伦伦影院午夜理论片 | 免费男性肉肉影院 | 无套内谢的新婚少妇国语播放 | 亚洲色欲色欲天天天www | 久久99精品久久久久婷婷 | 亚洲毛片av日韩av无码 | 亚洲日韩一区二区 | 色偷偷人人澡人人爽人人模 | 国产激情艳情在线看视频 | 在线播放免费人成毛片乱码 | 国产精品香蕉在线观看 | 久久久精品国产sm最大网站 | 无码福利日韩神码福利片 | 一本久道久久综合婷婷五月 | 久久99精品久久久久久动态图 | 成人无码影片精品久久久 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 欧美精品无码一区二区三区 | 欧美熟妇另类久久久久久不卡 | 丰满人妻一区二区三区免费视频 | 最近的中文字幕在线看视频 | 久久精品国产一区二区三区 | 日欧一片内射va在线影院 | 国产xxx69麻豆国语对白 | 一本久久a久久精品vr综合 | 在线欧美精品一区二区三区 | 一区二区传媒有限公司 | 国产精品久久国产三级国 | 日韩精品无码一区二区中文字幕 | 少妇一晚三次一区二区三区 | 久久精品人人做人人综合试看 | 久久无码中文字幕免费影院蜜桃 | 国产精品怡红院永久免费 | 装睡被陌生人摸出水好爽 | 日本乱人伦片中文三区 | 国产va免费精品观看 | 久久久久久久女国产乱让韩 | 学生妹亚洲一区二区 | 精品人妻中文字幕有码在线 | 国产成人综合美国十次 | 人妻与老人中文字幕 | 国产激情艳情在线看视频 | 色情久久久av熟女人妻网站 | 成人三级无码视频在线观看 | 国内精品九九久久久精品 | 亚洲乱码国产乱码精品精 | 成人免费视频视频在线观看 免费 | аⅴ资源天堂资源库在线 | 中文无码伦av中文字幕 | 在线观看欧美一区二区三区 | 九九在线中文字幕无码 | 国产欧美熟妇另类久久久 | 亚洲爆乳精品无码一区二区三区 | 日韩欧美群交p片內射中文 | 水蜜桃色314在线观看 | 色综合久久久无码中文字幕 | 亚洲欧洲中文日韩av乱码 | 精品人妻人人做人人爽夜夜爽 | 亚洲精品综合五月久久小说 | 亚洲色偷偷男人的天堂 | 一个人看的视频www在线 | 久久精品无码一区二区三区 | 99国产精品白浆在线观看免费 | 丰满少妇女裸体bbw | 日日鲁鲁鲁夜夜爽爽狠狠 | 精品成在人线av无码免费看 | 老熟女重囗味hdxx69 | 国产精品理论片在线观看 | 免费乱码人妻系列无码专区 | 国产成人av免费观看 | 青青青手机频在线观看 | 中文字幕av伊人av无码av | 高清无码午夜福利视频 | 丰满诱人的人妻3 | 久久精品人人做人人综合试看 | 天堂а√在线地址中文在线 | 丰满护士巨好爽好大乳 | 久久国产精品萌白酱免费 | 日日摸天天摸爽爽狠狠97 | 国产精品成人av在线观看 | 久久99精品国产麻豆 | 久久精品国产大片免费观看 | 黄网在线观看免费网站 | 亚洲精品欧美二区三区中文字幕 | 国产欧美熟妇另类久久久 | 久久久久se色偷偷亚洲精品av | 色综合视频一区二区三区 | a片免费视频在线观看 | 国产成人精品无码播放 | 欧美成人午夜精品久久久 | 一二三四社区在线中文视频 | 久久无码专区国产精品s | 亚洲乱码国产乱码精品精 | 在线欧美精品一区二区三区 | 日韩少妇白浆无码系列 | 日本丰满护士爆乳xxxx | 精品国精品国产自在久国产87 | 午夜福利不卡在线视频 | 狠狠色丁香久久婷婷综合五月 | 四虎影视成人永久免费观看视频 | 国产成人精品一区二区在线小狼 | 色欲久久久天天天综合网精品 | 免费无码av一区二区 | 装睡被陌生人摸出水好爽 | 亚洲精品中文字幕乱码 | 精品成人av一区二区三区 | 欧美黑人巨大xxxxx | 国产女主播喷水视频在线观看 | 免费无码av一区二区 | 日本丰满护士爆乳xxxx | 女人被男人爽到呻吟的视频 | 亚洲欧美国产精品久久 | 中文字幕无码免费久久9一区9 | 国产精品沙发午睡系列 | 亚洲一区二区三区 | 大肉大捧一进一出视频出来呀 | 久久精品国产一区二区三区 | 国产精品久免费的黄网站 | 97久久精品无码一区二区 | 亚洲欧洲中文日韩av乱码 | 强伦人妻一区二区三区视频18 | 中文字幕人妻无码一区二区三区 | 老熟妇乱子伦牲交视频 | 亚洲区欧美区综合区自拍区 | 99久久久无码国产精品免费 | 亚洲精品鲁一鲁一区二区三区 | 双乳奶水饱满少妇呻吟 | 中文字幕av无码一区二区三区电影 | 人妻有码中文字幕在线 | 久久午夜无码鲁丝片秋霞 | 国产综合在线观看 | 粉嫩少妇内射浓精videos | 国产人妻精品一区二区三区不卡 | 乱人伦人妻中文字幕无码久久网 | 国产无遮挡又黄又爽又色 | 精品乱子伦一区二区三区 | av无码电影一区二区三区 | 午夜福利试看120秒体验区 | 成人欧美一区二区三区黑人免费 | 学生妹亚洲一区二区 | 久久久精品成人免费观看 | 99久久久无码国产精品免费 | 色婷婷av一区二区三区之红樱桃 | 亚洲经典千人经典日产 | 天天拍夜夜添久久精品 | 久久综合香蕉国产蜜臀av | 国产成人人人97超碰超爽8 | 99久久精品日本一区二区免费 | 国产精品毛多多水多 | 国产无套内射久久久国产 | 丰满少妇女裸体bbw | 国产成人无码av片在线观看不卡 | 任你躁国产自任一区二区三区 | 久久久国产一区二区三区 | 国产av无码专区亚洲a∨毛片 | 国产黄在线观看免费观看不卡 | 国产精品无码成人午夜电影 | 亚洲欧美日韩国产精品一区二区 | 国产97人人超碰caoprom | 久久99久久99精品中文字幕 | 丰满少妇熟乱xxxxx视频 | 久久精品一区二区三区四区 | 沈阳熟女露脸对白视频 | 午夜福利试看120秒体验区 | 免费看男女做好爽好硬视频 | 亚洲综合在线一区二区三区 | 九九在线中文字幕无码 | 国产熟妇另类久久久久 | 嫩b人妻精品一区二区三区 | 欧美成人高清在线播放 | 牛和人交xxxx欧美 | 无码任你躁久久久久久久 | 久久zyz资源站无码中文动漫 | 亚洲自偷精品视频自拍 | 中文字幕无码av波多野吉衣 | 国产美女极度色诱视频www | 真人与拘做受免费视频 | 丁香啪啪综合成人亚洲 | 扒开双腿吃奶呻吟做受视频 | 久久久无码中文字幕久... | 国产激情精品一区二区三区 | 久久久久久国产精品无码下载 | 夜夜夜高潮夜夜爽夜夜爰爰 | √天堂资源地址中文在线 | 国色天香社区在线视频 | 欧美精品免费观看二区 | 久久久www成人免费毛片 | 久久久久久久人妻无码中文字幕爆 | 无码一区二区三区在线观看 | 精品久久久无码人妻字幂 | 欧美日韩人成综合在线播放 | 久久久国产一区二区三区 | 无套内谢老熟女 | 日本丰满熟妇videos | 亚洲人亚洲人成电影网站色 | 中文字幕乱妇无码av在线 | 国产麻豆精品精东影业av网站 | 欧美 亚洲 国产 另类 | 天堂久久天堂av色综合 | 国产av一区二区三区最新精品 | 人人爽人人爽人人片av亚洲 | 日韩人妻无码一区二区三区久久99 | 特大黑人娇小亚洲女 | 亚洲色欲久久久综合网东京热 | 亚洲乱亚洲乱妇50p | 久久综合激激的五月天 | 欧美精品在线观看 | 免费男性肉肉影院 | 国产精品.xx视频.xxtv | 午夜精品一区二区三区的区别 | 综合人妻久久一区二区精品 | 亚洲人成人无码网www国产 | 精品少妇爆乳无码av无码专区 | 女人高潮内射99精品 | 天堂久久天堂av色综合 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 午夜精品一区二区三区的区别 | 欧美三级a做爰在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产人妻精品一区二区三区不卡 | 樱花草在线社区www | 日本精品高清一区二区 | 中文毛片无遮挡高清免费 | av在线亚洲欧洲日产一区二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产成人无码区免费内射一片色欲 | 国产日产欧产精品精品app | 永久黄网站色视频免费直播 | 国产午夜福利100集发布 | 亚洲日本va午夜在线电影 | 少妇性l交大片欧洲热妇乱xxx | 一本一道久久综合久久 | 亚洲国产午夜精品理论片 | 少妇愉情理伦片bd | 亚洲 日韩 欧美 成人 在线观看 | 玩弄中年熟妇正在播放 | 久久精品视频在线看15 | 亚洲爆乳精品无码一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 欧美精品免费观看二区 | 国内精品九九久久久精品 | 久久综合久久自在自线精品自 | 亚洲日韩一区二区三区 | 性欧美牲交在线视频 | 国产美女极度色诱视频www | 性欧美牲交xxxxx视频 | 国产舌乚八伦偷品w中 | 久久综合激激的五月天 | 国産精品久久久久久久 | 日本护士毛茸茸高潮 | 久久久久av无码免费网 | 亚洲精品www久久久 | 99久久99久久免费精品蜜桃 | 黑人玩弄人妻中文在线 | 久久国产精品精品国产色婷婷 | 亚洲国产欧美在线成人 | 亚洲理论电影在线观看 | 国产疯狂伦交大片 | 无码人妻精品一区二区三区不卡 | 欧美大屁股xxxxhd黑色 | 国产激情精品一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 欧美高清在线精品一区 | 亚洲精品国产品国语在线观看 | 日本在线高清不卡免费播放 | 亚洲第一网站男人都懂 | 色一情一乱一伦 | 中国大陆精品视频xxxx | 亚洲日韩中文字幕在线播放 | 男人的天堂av网站 | 亚洲中文字幕无码中字 | 蜜桃臀无码内射一区二区三区 | 久久综合狠狠综合久久综合88 | 亚洲成a人片在线观看无码 | 我要看www免费看插插视频 | 骚片av蜜桃精品一区 | 久久精品视频在线看15 | 国产成人无码一二三区视频 | 人妻少妇精品无码专区二区 | 国产网红无码精品视频 | 樱花草在线社区www | 少妇被粗大的猛进出69影院 | 亚洲一区二区三区偷拍女厕 | 日韩av激情在线观看 | 国产成人无码av片在线观看不卡 | 伊人久久大香线蕉av一区二区 | 国产激情无码一区二区app | 午夜福利一区二区三区在线观看 | 老熟女重囗味hdxx69 | 日韩 欧美 动漫 国产 制服 | 亚洲色无码一区二区三区 | 久久综合九色综合欧美狠狠 | 国产精品久久久午夜夜伦鲁鲁 | 久久99久久99精品中文字幕 | 免费网站看v片在线18禁无码 | 玩弄中年熟妇正在播放 | 国产内射爽爽大片视频社区在线 | 久久久精品456亚洲影院 | 图片小说视频一区二区 | 亚洲 激情 小说 另类 欧美 | 久久午夜无码鲁丝片 | 又大又硬又黄的免费视频 | 九月婷婷人人澡人人添人人爽 | 亚洲国产精品无码一区二区三区 | 久久人人爽人人爽人人片av高清 | 久久久久亚洲精品中文字幕 | 亚洲理论电影在线观看 | 成人aaa片一区国产精品 | www国产精品内射老师 | 无遮无挡爽爽免费视频 | 噜噜噜亚洲色成人网站 | 国产婷婷色一区二区三区在线 | 97色伦图片97综合影院 | 九九在线中文字幕无码 | 一本大道伊人av久久综合 | 成人无码精品一区二区三区 | 中文字幕av无码一区二区三区电影 | 亚洲热妇无码av在线播放 | 国产女主播喷水视频在线观看 | 亚洲国产精品美女久久久久 | 久久精品国产大片免费观看 | 99国产精品白浆在线观看免费 | 午夜福利试看120秒体验区 | 国产极品美女高潮无套在线观看 | 2020最新国产自产精品 | 亚洲伊人久久精品影院 | 香蕉久久久久久av成人 | 久久精品女人天堂av免费观看 | 一本久久伊人热热精品中文字幕 | 六月丁香婷婷色狠狠久久 | 久久久久久久久888 | 国产手机在线αⅴ片无码观看 | 国精品人妻无码一区二区三区蜜柚 | 国产综合色产在线精品 | 久久99精品久久久久久动态图 | 天天做天天爱天天爽综合网 | 日韩欧美群交p片內射中文 | 国产亚洲美女精品久久久2020 | 日产精品高潮呻吟av久久 | 波多野结衣乳巨码无在线观看 | 黑人巨大精品欧美黑寡妇 | 人妻少妇精品久久 | 思思久久99热只有频精品66 | 99久久99久久免费精品蜜桃 | 日本大香伊一区二区三区 | 日韩欧美成人免费观看 | 国产麻豆精品一区二区三区v视界 | 国产人妻人伦精品 | 扒开双腿吃奶呻吟做受视频 | 国产精品内射视频免费 | 强奷人妻日本中文字幕 | 正在播放老肥熟妇露脸 | 18黄暴禁片在线观看 | 国色天香社区在线视频 | 亚洲精品成人福利网站 | 成人综合网亚洲伊人 | 在线看片无码永久免费视频 | 娇妻被黑人粗大高潮白浆 | 日韩av无码一区二区三区 | 欧美日韩人成综合在线播放 | 97精品国产97久久久久久免费 | 国产成人精品必看 | 福利一区二区三区视频在线观看 | 国产69精品久久久久app下载 | 国产午夜亚洲精品不卡 | 亚洲欧美色中文字幕在线 | 97久久精品无码一区二区 | 亚洲日韩av片在线观看 | 亚洲综合无码久久精品综合 | 国产成人精品优优av | 亚洲欧美国产精品专区久久 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 伊人久久大香线焦av综合影院 | 国产午夜福利100集发布 | 亚洲精品中文字幕久久久久 | 色老头在线一区二区三区 | 99久久精品日本一区二区免费 | 欧美性色19p | 无码国产激情在线观看 | 亚洲中文字幕成人无码 | 国产女主播喷水视频在线观看 | 久久久久av无码免费网 | 人人妻在人人 | 欧洲vodafone精品性 | 日本一卡2卡3卡四卡精品网站 | 人人妻人人藻人人爽欧美一区 | 国产精品久久久午夜夜伦鲁鲁 | 国产亚洲精品精品国产亚洲综合 | 欧美三级不卡在线观看 | 青青草原综合久久大伊人精品 | 亲嘴扒胸摸屁股激烈网站 | 动漫av网站免费观看 | 2020久久超碰国产精品最新 | 少妇被粗大的猛进出69影院 | 一本精品99久久精品77 | 大肉大捧一进一出视频出来呀 | 毛片内射-百度 | 国产成人无码午夜视频在线观看 | 无码av岛国片在线播放 | 亚洲综合无码一区二区三区 | 天天av天天av天天透 | 国产精品人人爽人人做我的可爱 | 国精产品一区二区三区 | 永久免费精品精品永久-夜色 | 在线观看国产一区二区三区 | 国产人妻大战黑人第1集 | 乱人伦人妻中文字幕无码久久网 | 久久精品人人做人人综合 | 国产婷婷色一区二区三区在线 | 精品少妇爆乳无码av无码专区 | 国精品人妻无码一区二区三区蜜柚 | 国产精品国产自线拍免费软件 | 国产精品久久久久久亚洲毛片 | 成人性做爰aaa片免费看 | 老太婆性杂交欧美肥老太 | 成人无码影片精品久久久 | 色妞www精品免费视频 | 性生交片免费无码看人 | 欧美日本精品一区二区三区 | 亚洲精品国产第一综合99久久 | 亚洲小说春色综合另类 | 牲欲强的熟妇农村老妇女 | 无码纯肉视频在线观看 | 国产亚洲日韩欧美另类第八页 | 天天摸天天透天天添 | 日日鲁鲁鲁夜夜爽爽狠狠 | a片在线免费观看 | 欧美激情一区二区三区成人 | 精品aⅴ一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 在线亚洲高清揄拍自拍一品区 | 久久久中文久久久无码 | 中文字幕无码免费久久99 | 久久精品视频在线看15 | 免费看少妇作爱视频 | 日本精品高清一区二区 | 久久熟妇人妻午夜寂寞影院 | 东北女人啪啪对白 | 红桃av一区二区三区在线无码av | 亚洲人亚洲人成电影网站色 | 国产麻豆精品精东影业av网站 | 国产免费观看黄av片 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品久久久久久亚洲影视内衣 | 日韩人妻无码一区二区三区久久99 | 国产综合久久久久鬼色 | 日本免费一区二区三区最新 | 欧美成人家庭影院 | 亚洲一区二区三区香蕉 | 国产精品二区一区二区aⅴ污介绍 | 亚洲熟妇色xxxxx欧美老妇 | 欧美老人巨大xxxx做受 | 丰满妇女强制高潮18xxxx | 亚洲精品午夜国产va久久成人 | 麻豆国产人妻欲求不满 | 人妻少妇精品视频专区 | 97精品国产97久久久久久免费 | 久久五月精品中文字幕 | 日本在线高清不卡免费播放 | 色婷婷欧美在线播放内射 | 久久精品国产日本波多野结衣 | 131美女爱做视频 | 99国产欧美久久久精品 | 精品成在人线av无码免费看 | 国产三级精品三级男人的天堂 | 国产凸凹视频一区二区 | 人人爽人人爽人人片av亚洲 | 亚洲一区二区三区香蕉 | 中文久久乱码一区二区 | 一个人看的视频www在线 | 乱码午夜-极国产极内射 | 国产亚洲精品久久久闺蜜 | 国产另类ts人妖一区二区 | 精品无码一区二区三区爱欲 | 免费人成网站视频在线观看 | 中国大陆精品视频xxxx | 欧美丰满熟妇xxxx | 日韩av激情在线观看 | 黑人玩弄人妻中文在线 | 99er热精品视频 | 久久久久久av无码免费看大片 | 伦伦影院午夜理论片 | 午夜福利试看120秒体验区 | 色婷婷综合中文久久一本 | 一本大道久久东京热无码av | 国产av一区二区精品久久凹凸 | 国产人妻人伦精品1国产丝袜 | 在线精品亚洲一区二区 | 男人的天堂2018无码 | 国产猛烈高潮尖叫视频免费 | 久久综合给合久久狠狠狠97色 | 全黄性性激高免费视频 | 亚洲熟熟妇xxxx | 久久精品中文闷骚内射 | 中文字幕乱妇无码av在线 | 天堂а√在线中文在线 | 精品人妻人人做人人爽 | 乱人伦人妻中文字幕无码 | 久久久无码中文字幕久... | 色老头在线一区二区三区 | 在线a亚洲视频播放在线观看 | 夜夜躁日日躁狠狠久久av | 久久久久成人精品免费播放动漫 | 久久无码专区国产精品s | 免费国产黄网站在线观看 | 中文字幕+乱码+中文字幕一区 | 无码任你躁久久久久久久 | 麻豆国产丝袜白领秘书在线观看 | 又大又紧又粉嫩18p少妇 | 欧美日韩一区二区综合 | 中文字幕+乱码+中文字幕一区 | 欧美老熟妇乱xxxxx | 性啪啪chinese东北女人 | 色老头在线一区二区三区 | 色欲人妻aaaaaaa无码 | 欧美国产日产一区二区 | 嫩b人妻精品一区二区三区 | 国产成人无码专区 | 亚洲中文字幕在线观看 | 1000部啪啪未满十八勿入下载 | 亚洲精品午夜国产va久久成人 | 2020最新国产自产精品 | 乱中年女人伦av三区 | 成人一在线视频日韩国产 | 亚洲精品午夜国产va久久成人 | 九月婷婷人人澡人人添人人爽 | 2019nv天堂香蕉在线观看 | 天堂无码人妻精品一区二区三区 | 熟妇人妻无乱码中文字幕 | 亚洲成熟女人毛毛耸耸多 | 人人妻人人澡人人爽欧美精品 | 亚洲国产av美女网站 | 国产肉丝袜在线观看 | 中文字幕无码av激情不卡 | 精品久久久无码中文字幕 | 亚洲一区二区三区香蕉 | 国产精品人妻一区二区三区四 | 日韩无码专区 | 国内精品九九久久久精品 | 午夜福利电影 | 国产偷自视频区视频 | 性啪啪chinese东北女人 | 国产精品久久久久无码av色戒 | 国产亚洲精品久久久久久久 | 国产激情艳情在线看视频 | 日韩人妻无码中文字幕视频 | 免费国产成人高清在线观看网站 | 女人被男人爽到呻吟的视频 | 免费人成网站视频在线观看 | 欧美日韩视频无码一区二区三 | 亚洲精品中文字幕久久久久 | 中文字幕无码热在线视频 | 九月婷婷人人澡人人添人人爽 | 久久综合九色综合欧美狠狠 | 国产极品美女高潮无套在线观看 | 一本久道高清无码视频 | 久久久久人妻一区精品色欧美 | 欧美放荡的少妇 | 妺妺窝人体色www在线小说 | 国产精品久久久av久久久 | 熟妇激情内射com | 日本丰满熟妇videos | 波多野结衣高清一区二区三区 | 高清不卡一区二区三区 | 东北女人啪啪对白 | 国产又爽又猛又粗的视频a片 | 麻豆果冻传媒2021精品传媒一区下载 | 国产成人精品一区二区在线小狼 | 少妇激情av一区二区 | 国产亚洲视频中文字幕97精品 | 国产精品高潮呻吟av久久 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 人妻有码中文字幕在线 | 国产三级久久久精品麻豆三级 | 水蜜桃亚洲一二三四在线 | 日本一区二区更新不卡 | 精品国产一区av天美传媒 | 国产深夜福利视频在线 | 国产av一区二区三区最新精品 | 精品国产一区二区三区四区 | 四虎永久在线精品免费网址 | 国产av无码专区亚洲awww | 精品久久8x国产免费观看 | 任你躁国产自任一区二区三区 | 男人的天堂av网站 | 成人性做爰aaa片免费看不忠 | 99久久精品无码一区二区毛片 | 国产莉萝无码av在线播放 | 精品夜夜澡人妻无码av蜜桃 | 成在人线av无码免费 | 国产一区二区不卡老阿姨 | 夜夜躁日日躁狠狠久久av | 亚洲中文字幕av在天堂 | 大胆欧美熟妇xx | 中文字幕无码乱人伦 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲人成影院在线无码按摩店 | 中文字幕无码免费久久99 | 奇米影视7777久久精品人人爽 | 国产午夜视频在线观看 | 国产后入清纯学生妹 | 色欲人妻aaaaaaa无码 | 夜精品a片一区二区三区无码白浆 | 国产人妻久久精品二区三区老狼 | 欧洲极品少妇 | 国产精品亚洲综合色区韩国 | 免费男性肉肉影院 | 亚洲区小说区激情区图片区 | 老头边吃奶边弄进去呻吟 | 精品亚洲韩国一区二区三区 | 黑森林福利视频导航 | а√天堂www在线天堂小说 | 亚洲精品久久久久久久久久久 | 丰满岳乱妇在线观看中字无码 | 天天综合网天天综合色 | 欧美一区二区三区视频在线观看 | 久久精品无码一区二区三区 | 蜜桃视频插满18在线观看 | 亚洲人成无码网www | 午夜福利试看120秒体验区 | 亚洲色无码一区二区三区 | 中文字幕日产无线码一区 | 乌克兰少妇性做爰 | 国产精品亚洲一区二区三区喷水 | 亚洲人成无码网www | 日日天日日夜日日摸 | 亚洲日韩av一区二区三区中文 | 国产av无码专区亚洲a∨毛片 | 激情爆乳一区二区三区 | 国产无套内射久久久国产 | 欧美日韩亚洲国产精品 | 牛和人交xxxx欧美 | 人妻天天爽夜夜爽一区二区 | 亚洲精品综合一区二区三区在线 | 日日摸日日碰夜夜爽av | 免费无码一区二区三区蜜桃大 | 天堂久久天堂av色综合 | 丰满岳乱妇在线观看中字无码 | 97久久超碰中文字幕 | 成熟人妻av无码专区 | 国产无遮挡又黄又爽免费视频 | 无码一区二区三区在线 | 久久精品女人天堂av免费观看 | 成人一在线视频日韩国产 | 水蜜桃av无码 | 人妻无码αv中文字幕久久琪琪布 | 成人精品视频一区二区三区尤物 | 欧美性猛交内射兽交老熟妇 | 学生妹亚洲一区二区 | 成人精品天堂一区二区三区 | 内射老妇bbwx0c0ck | 内射老妇bbwx0c0ck | 久久久久se色偷偷亚洲精品av | 亚洲日本一区二区三区在线 | 玩弄少妇高潮ⅹxxxyw | 午夜精品久久久内射近拍高清 | 东京热一精品无码av | 国产人妻人伦精品1国产丝袜 | 色综合久久中文娱乐网 | 国产精品视频免费播放 | 亚洲精品久久久久久久久久久 | 国产特级毛片aaaaaa高潮流水 | 熟女少妇人妻中文字幕 | 国产精品成人av在线观看 | 成熟女人特级毛片www免费 | 国产av久久久久精东av | 天天做天天爱天天爽综合网 | 国产av一区二区精品久久凹凸 | 亚拍精品一区二区三区探花 | 天堂久久天堂av色综合 | 国产成人精品无码播放 | 成人综合网亚洲伊人 | 少妇高潮喷潮久久久影院 | 国产高潮视频在线观看 | 成人无码精品1区2区3区免费看 | 国产精品亚洲lv粉色 | 清纯唯美经典一区二区 | 精品厕所偷拍各类美女tp嘘嘘 | 十八禁视频网站在线观看 | 国产成人av免费观看 | 久久精品人人做人人综合 | 久久午夜无码鲁丝片午夜精品 | 中文久久乱码一区二区 | 国产一区二区三区四区五区加勒比 | 中文字幕人妻丝袜二区 | 欧美成人午夜精品久久久 | 狂野欧美性猛xxxx乱大交 | 日本大香伊一区二区三区 | 色婷婷久久一区二区三区麻豆 | 色欲久久久天天天综合网精品 | 无码人中文字幕 | 水蜜桃亚洲一二三四在线 | 一个人看的视频www在线 | 无码乱肉视频免费大全合集 | 色综合久久久无码中文字幕 | 最近免费中文字幕中文高清百度 | 日日摸日日碰夜夜爽av | 国产成人亚洲综合无码 | 国产超碰人人爽人人做人人添 | 欧美人与善在线com | 国产97在线 | 亚洲 | av在线亚洲欧洲日产一区二区 | 亚洲成av人在线观看网址 | 婷婷五月综合激情中文字幕 | 亚洲爆乳精品无码一区二区三区 | 国产亚洲tv在线观看 | 特黄特色大片免费播放器图片 | 午夜精品久久久内射近拍高清 | 久久天天躁夜夜躁狠狠 | 国产绳艺sm调教室论坛 | 中文无码成人免费视频在线观看 | 人妻无码αv中文字幕久久琪琪布 | 欧美激情一区二区三区成人 | 成人免费视频视频在线观看 免费 | 久久久成人毛片无码 | 少妇邻居内射在线 | 久久无码专区国产精品s | 亚洲精品欧美二区三区中文字幕 | 欧美成人高清在线播放 | 又黄又爽又色的视频 | 日本熟妇人妻xxxxx人hd | 国产亚洲精品久久久久久大师 | 女人被男人躁得好爽免费视频 | 午夜福利一区二区三区在线观看 | 午夜男女很黄的视频 | 激情五月综合色婷婷一区二区 | 熟妇女人妻丰满少妇中文字幕 | 台湾无码一区二区 | 精品乱子伦一区二区三区 | 亚洲色欲色欲天天天www | 四虎国产精品一区二区 | 一区二区三区乱码在线 | 欧洲 | 日本xxxx色视频在线观看免费 | 精品亚洲韩国一区二区三区 | 国产人妻精品一区二区三区 | 中文字幕av无码一区二区三区电影 | 国语精品一区二区三区 | 99视频精品全部免费免费观看 | 亚洲精品无码国产 | 国产性生大片免费观看性 | 欧美人与禽zoz0性伦交 | 野狼第一精品社区 | 亚洲精品成人av在线 | 亚洲va中文字幕无码久久不卡 | 狠狠色色综合网站 | 国产在线无码精品电影网 | 国产在线精品一区二区三区直播 | 日本欧美一区二区三区乱码 | 日日摸夜夜摸狠狠摸婷婷 | 亚洲成a人片在线观看无码 | 国语自产偷拍精品视频偷 | 亚洲欧美中文字幕5发布 | 男人的天堂av网站 | 爆乳一区二区三区无码 | 国产精品久久久久久久影院 | 国产性生交xxxxx无码 | 亚洲 欧美 激情 小说 另类 | 亚洲日韩av片在线观看 | 国产后入清纯学生妹 | 日日噜噜噜噜夜夜爽亚洲精品 | 国语精品一区二区三区 | 99精品无人区乱码1区2区3区 | 久久综合色之久久综合 | 欧美freesex黑人又粗又大 | 亚洲小说春色综合另类 | 国产无av码在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 熟妇人妻无乱码中文字幕 | 国产xxx69麻豆国语对白 | 亚洲国产欧美在线成人 | 国产一精品一av一免费 | 国产精品免费大片 | 成在人线av无码免观看麻豆 | 女人被男人躁得好爽免费视频 | 永久免费精品精品永久-夜色 | 国产人妖乱国产精品人妖 | 少妇邻居内射在线 | 亚洲中文字幕无码一久久区 | 欧美国产日产一区二区 | 日本熟妇乱子伦xxxx | 荫蒂添的好舒服视频囗交 | 国产极品美女高潮无套在线观看 | 精品久久久久久人妻无码中文字幕 | 精品久久久无码中文字幕 | 无码精品人妻一区二区三区av | 欧美乱妇无乱码大黄a片 | 久久久久人妻一区精品色欧美 | 内射白嫩少妇超碰 | 99久久人妻精品免费一区 | 白嫩日本少妇做爰 | 亚洲欧美日韩国产精品一区二区 | 丰满岳乱妇在线观看中字无码 | av无码电影一区二区三区 | 久久人人爽人人爽人人片ⅴ | 日本爽爽爽爽爽爽在线观看免 | 中文字幕人成乱码熟女app | 77777熟女视频在线观看 а天堂中文在线官网 | 精品水蜜桃久久久久久久 | 无码一区二区三区在线观看 | 久9re热视频这里只有精品 | 中文字幕乱码中文乱码51精品 | 亚洲理论电影在线观看 | 日产精品99久久久久久 | 久久99国产综合精品 | а√资源新版在线天堂 | 精品人妻人人做人人爽夜夜爽 | 无码人妻久久一区二区三区不卡 | 人妻尝试又大又粗久久 | 4hu四虎永久在线观看 | 亚洲欧美中文字幕5发布 | 国产精品久久久久久久影院 | 男女作爱免费网站 | 超碰97人人做人人爱少妇 | 国产精品无码永久免费888 | 久久精品女人的天堂av | 久久国产劲爆∧v内射 | 麻豆国产人妻欲求不满 | 亚洲国产欧美日韩精品一区二区三区 | 99久久精品国产一区二区蜜芽 | 亚洲精品欧美二区三区中文字幕 | 免费乱码人妻系列无码专区 | 久久精品国产99久久6动漫 | 中文字幕 亚洲精品 第1页 | 成人一区二区免费视频 | 国产精品igao视频网 | 无码任你躁久久久久久久 | 国产激情综合五月久久 | 久久久久久久女国产乱让韩 | 国产亚洲精品久久久久久久久动漫 | 人妻互换免费中文字幕 | 少妇高潮喷潮久久久影院 | 国产手机在线αⅴ片无码观看 | 好男人www社区 | 精品国产aⅴ无码一区二区 | 青青青手机频在线观看 | 2020最新国产自产精品 | 久久zyz资源站无码中文动漫 | 夜先锋av资源网站 | a国产一区二区免费入口 | 国产欧美熟妇另类久久久 | 人人妻人人澡人人爽人人精品 | 亚洲国产精品成人久久蜜臀 | 久久人人爽人人爽人人片ⅴ | 学生妹亚洲一区二区 | 玩弄人妻少妇500系列视频 | 亚洲午夜无码久久 | 久久伊人色av天堂九九小黄鸭 | 国内精品人妻无码久久久影院 | 77777熟女视频在线观看 а天堂中文在线官网 | 香港三级日本三级妇三级 | 国产成人无码av片在线观看不卡 | аⅴ资源天堂资源库在线 | 成人无码视频免费播放 | 狂野欧美激情性xxxx | 亚洲中文字幕va福利 | 精品人妻中文字幕有码在线 | 久久婷婷五月综合色国产香蕉 | 国内精品久久久久久中文字幕 | 精品国产精品久久一区免费式 | 草草网站影院白丝内射 | 国产亚洲欧美日韩亚洲中文色 | 偷窥日本少妇撒尿chinese | 野狼第一精品社区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲欧洲日本综合aⅴ在线 | 无码国产色欲xxxxx视频 | 日韩少妇内射免费播放 | 国产精品久久久久久久9999 | 久久精品国产99久久6动漫 | 国产人成高清在线视频99最全资源 | 欧美老妇交乱视频在线观看 | 亚洲精品一区二区三区婷婷月 | 爆乳一区二区三区无码 | 中文字幕精品av一区二区五区 | 久青草影院在线观看国产 | 无码人妻久久一区二区三区不卡 | 亚洲熟悉妇女xxx妇女av | 我要看www免费看插插视频 | 国产人妻精品午夜福利免费 | 欧美日韩一区二区综合 | 亚洲综合色区中文字幕 | 国产热a欧美热a在线视频 | 国产亲子乱弄免费视频 | 少妇性荡欲午夜性开放视频剧场 | 成年女人永久免费看片 | 日韩人妻无码中文字幕视频 | 国产成人午夜福利在线播放 | 国产精品无码久久av | 成人精品一区二区三区中文字幕 | 在线观看免费人成视频 | 国产精品理论片在线观看 | 乱中年女人伦av三区 | 欧美午夜特黄aaaaaa片 | 日产精品99久久久久久 | 亚无码乱人伦一区二区 | 又大又黄又粗又爽的免费视频 | 欧美成人免费全部网站 | 久久人人97超碰a片精品 | 狂野欧美性猛交免费视频 | 国产日产欧产精品精品app | 亚洲国产综合无码一区 | 俄罗斯老熟妇色xxxx | 国产一区二区三区日韩精品 | 国产两女互慰高潮视频在线观看 | 牲欲强的熟妇农村老妇女 | 成在人线av无码免费 | 婷婷丁香六月激情综合啪 | 无码精品人妻一区二区三区av | 曰本女人与公拘交酡免费视频 | 美女黄网站人色视频免费国产 | 久久国产精品萌白酱免费 | 国产精华av午夜在线观看 | 乱人伦人妻中文字幕无码久久网 | 日本xxxx色视频在线观看免费 | 免费无码一区二区三区蜜桃大 | 亚洲小说春色综合另类 | 久久国语露脸国产精品电影 | 在线播放无码字幕亚洲 | 国产精品igao视频网 | 久久成人a毛片免费观看网站 | a国产一区二区免费入口 | 亚洲日韩av一区二区三区四区 | 亚洲一区二区观看播放 | 欧美自拍另类欧美综合图片区 | 国产一精品一av一免费 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲爆乳无码专区 | 中文字幕无码日韩专区 | 中文无码精品a∨在线观看不卡 | 国产麻豆精品一区二区三区v视界 | 国产后入清纯学生妹 | 中文字幕人成乱码熟女app | 国产成人无码a区在线观看视频app | 久久久久免费精品国产 | 国内精品九九久久久精品 | 亚洲国产av精品一区二区蜜芽 | 乱人伦中文视频在线观看 | 国产一区二区三区精品视频 | 狠狠色噜噜狠狠狠7777奇米 | 人妻插b视频一区二区三区 | 无码av最新清无码专区吞精 | 国产精品人人爽人人做我的可爱 | 荫蒂添的好舒服视频囗交 | 欧美大屁股xxxxhd黑色 | 午夜精品久久久内射近拍高清 | 人人妻人人澡人人爽欧美精品 | 人人澡人摸人人添 | 午夜精品久久久久久久 | 水蜜桃色314在线观看 | 欧美怡红院免费全部视频 | 亚洲国产精品美女久久久久 | 国产麻豆精品一区二区三区v视界 | 黄网在线观看免费网站 | 99精品视频在线观看免费 | 性欧美疯狂xxxxbbbb | 丁香啪啪综合成人亚洲 | 学生妹亚洲一区二区 | 国产精品久久久久7777 | 日本护士xxxxhd少妇 | 双乳奶水饱满少妇呻吟 | 人妻熟女一区 | 精品午夜福利在线观看 | 小泽玛莉亚一区二区视频在线 | 99riav国产精品视频 | 久久精品视频在线看15 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲gv猛男gv无码男同 | 国产精品第一国产精品 | 欧美三级a做爰在线观看 | 国产农村乱对白刺激视频 | 国产精品无码久久av | 精品国产一区二区三区四区 | 久久综合给合久久狠狠狠97色 | 国产超碰人人爽人人做人人添 | 亚洲精品一区三区三区在线观看 | 国产精品久久久午夜夜伦鲁鲁 | 精品久久久无码人妻字幂 | 久久精品无码一区二区三区 | 偷窥村妇洗澡毛毛多 | 天天爽夜夜爽夜夜爽 | 亚洲色大成网站www国产 | 岛国片人妻三上悠亚 | 国色天香社区在线视频 | 亚洲色大成网站www | 狠狠色欧美亚洲狠狠色www | 精品国产精品久久一区免费式 | 少妇性l交大片 | 真人与拘做受免费视频 | 一本一道久久综合久久 | 欧美亚洲日韩国产人成在线播放 | 欧美丰满熟妇xxxx性ppx人交 | 一本无码人妻在中文字幕免费 | 国产9 9在线 | 中文 | 精品无码国产一区二区三区av | 一本一道久久综合久久 | 丰满人妻一区二区三区免费视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 日产精品高潮呻吟av久久 | 激情内射亚州一区二区三区爱妻 | 激情国产av做激情国产爱 | 女人被男人爽到呻吟的视频 | 无码中文字幕色专区 | 亚洲色大成网站www国产 | 成人三级无码视频在线观看 | 男人扒开女人内裤强吻桶进去 | 亚洲日本在线电影 | 图片小说视频一区二区 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 成人性做爰aaa片免费看 | 午夜无码人妻av大片色欲 | 国内精品人妻无码久久久影院 | 九九久久精品国产免费看小说 | 久久无码中文字幕免费影院蜜桃 | 日日天干夜夜狠狠爱 | 亚洲va欧美va天堂v国产综合 | 国产人妻久久精品二区三区老狼 | 鲁鲁鲁爽爽爽在线视频观看 | 久久这里只有精品视频9 | 女人被男人躁得好爽免费视频 | 久久精品国产亚洲精品 | 国产一区二区三区影院 | 日韩无套无码精品 | 免费无码av一区二区 | 小sao货水好多真紧h无码视频 | 国产尤物精品视频 | 亚洲人成影院在线观看 | 国产亚洲精品久久久久久久久动漫 | 国产色精品久久人妻 | 亚洲天堂2017无码中文 | 4hu四虎永久在线观看 | 国产精品二区一区二区aⅴ污介绍 | 国产偷国产偷精品高清尤物 | 国色天香社区在线视频 | 成人无码视频在线观看网站 | ass日本丰满熟妇pics | 日本www一道久久久免费榴莲 | 无遮挡国产高潮视频免费观看 | 中文字幕无码免费久久9一区9 | 无码人妻精品一区二区三区不卡 | 午夜福利不卡在线视频 | 欧美一区二区三区 | 精品成人av一区二区三区 | 中文字幕 人妻熟女 | 日本精品高清一区二区 | 国产农村妇女高潮大叫 | 一个人看的www免费视频在线观看 | 国产国语老龄妇女a片 | 日日摸夜夜摸狠狠摸婷婷 | 日产国产精品亚洲系列 | 亚洲啪av永久无码精品放毛片 | 亚洲无人区午夜福利码高清完整版 | 高清不卡一区二区三区 | 大色综合色综合网站 | 美女极度色诱视频国产 | 国产又爽又黄又刺激的视频 | 国产成人精品三级麻豆 | 亚洲欧美日韩成人高清在线一区 | 国产人妻精品一区二区三区不卡 | 亚洲娇小与黑人巨大交 | 亚洲精品午夜国产va久久成人 | 国内揄拍国内精品人妻 | 亚洲一区二区三区香蕉 | 超碰97人人做人人爱少妇 | 性做久久久久久久免费看 | 奇米影视7777久久精品人人爽 | 色欲av亚洲一区无码少妇 | 国产又爽又黄又刺激的视频 | 色婷婷欧美在线播放内射 | 久久综合色之久久综合 | 99re在线播放 | 欧美人与禽猛交狂配 | 久久久无码中文字幕久... | 男人扒开女人内裤强吻桶进去 | 亚洲精品国产第一综合99久久 | 人妻少妇精品视频专区 | 国产精品久久久午夜夜伦鲁鲁 | 纯爱无遮挡h肉动漫在线播放 | 人妻少妇被猛烈进入中文字幕 | 大色综合色综合网站 | 人妻少妇被猛烈进入中文字幕 | 久久人人97超碰a片精品 | 国精品人妻无码一区二区三区蜜柚 | 国产乱人偷精品人妻a片 | 丰满少妇高潮惨叫视频 | 男女性色大片免费网站 | 亚洲综合另类小说色区 | 精品无码国产一区二区三区av | 女人被爽到呻吟gif动态图视看 | 十八禁视频网站在线观看 | 人妻少妇精品视频专区 | 日日摸天天摸爽爽狠狠97 | 亚洲熟妇自偷自拍另类 | 国产美女极度色诱视频www | 樱花草在线播放免费中文 | 一本色道久久综合狠狠躁 | 久久亚洲国产成人精品性色 | 亚洲精品中文字幕久久久久 | 国产美女精品一区二区三区 | 午夜福利一区二区三区在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 国产午夜亚洲精品不卡 | 爆乳一区二区三区无码 | 久久久成人毛片无码 | 国产xxx69麻豆国语对白 | 漂亮人妻洗澡被公强 日日躁 | 97色伦图片97综合影院 | 丰满人妻一区二区三区免费视频 | 国产精品久久久av久久久 | 无码人妻精品一区二区三区下载 | 丰满人妻被黑人猛烈进入 | 97人妻精品一区二区三区 | 无码精品国产va在线观看dvd | 无码人妻少妇伦在线电影 | 久久久久久九九精品久 | 久久综合九色综合欧美狠狠 | 亚洲精品久久久久avwww潮水 | 亚洲国产精品一区二区美利坚 | 国产人妖乱国产精品人妖 | 真人与拘做受免费视频 | 无遮无挡爽爽免费视频 | 奇米影视7777久久精品 | 人妻互换免费中文字幕 | 亚洲а∨天堂久久精品2021 | 亚洲小说图区综合在线 | 久青草影院在线观看国产 | 无码帝国www无码专区色综合 | 午夜成人1000部免费视频 | 国产在线无码精品电影网 | 大色综合色综合网站 | 日本一区二区更新不卡 | 亚洲精品成a人在线观看 | 无码国产色欲xxxxx视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 精品国产成人一区二区三区 | 午夜免费福利小电影 | 日本va欧美va欧美va精品 | 久久久久人妻一区精品色欧美 | 久久人人爽人人爽人人片av高清 | 在线观看免费人成视频 | 欧洲极品少妇 | 玩弄人妻少妇500系列视频 | 无码一区二区三区在线 | 欧美freesex黑人又粗又大 | 国产偷抇久久精品a片69 | 无码国产激情在线观看 | 日日干夜夜干 | 精品国产一区二区三区四区 | 天天躁日日躁狠狠躁免费麻豆 | 在线观看国产一区二区三区 | 国产精品办公室沙发 | 天堂а√在线地址中文在线 | 国内丰满熟女出轨videos | 国产亚av手机在线观看 | 最新国产乱人伦偷精品免费网站 | 亚洲区小说区激情区图片区 | 啦啦啦www在线观看免费视频 | 国产精品第一国产精品 | 日产精品高潮呻吟av久久 | 久久综合激激的五月天 | 初尝人妻少妇中文字幕 | 欧美35页视频在线观看 | 2020久久香蕉国产线看观看 | 国产福利视频一区二区 | 国产精品二区一区二区aⅴ污介绍 | 亚洲国产高清在线观看视频 | 亚洲啪av永久无码精品放毛片 | 亚洲精品中文字幕久久久久 | 又湿又紧又大又爽a视频国产 | 东京无码熟妇人妻av在线网址 | 久久久久免费精品国产 | 欧美人与动性行为视频 | 兔费看少妇性l交大片免费 | 亚洲日韩精品欧美一区二区 | 久久综合久久自在自线精品自 | 国产精品成人av在线观看 | 久久精品人人做人人综合 | 久久综合激激的五月天 | 日韩精品无码一本二本三本色 | 国产精品人人爽人人做我的可爱 | 亚洲乱亚洲乱妇50p | 欧美国产日产一区二区 | 草草网站影院白丝内射 | 99久久久国产精品无码免费 | 免费乱码人妻系列无码专区 | 精品 日韩 国产 欧美 视频 | 蜜桃视频韩日免费播放 | 亚洲va中文字幕无码久久不卡 | 伊人久久大香线蕉av一区二区 | 亚洲成a人一区二区三区 | 高清国产亚洲精品自在久久 | a片在线免费观看 | 狂野欧美性猛xxxx乱大交 | 亚洲中文无码av永久不收费 | 成 人影片 免费观看 | 久久人人爽人人人人片 | 国产性生交xxxxx无码 | 无码乱肉视频免费大全合集 | 女高中生第一次破苞av | 日本护士xxxxhd少妇 | 久久精品国产一区二区三区肥胖 | 国产成人无码av一区二区 | 欧美日韩在线亚洲综合国产人 | 亚洲色在线无码国产精品不卡 | 清纯唯美经典一区二区 | 无遮挡国产高潮视频免费观看 | 黑人大群体交免费视频 | 少妇无码一区二区二三区 | 国产办公室秘书无码精品99 | 亚洲成av人在线观看网址 | 精品国产一区av天美传媒 | 宝宝好涨水快流出来免费视频 | 无码一区二区三区在线观看 | 无码国产乱人伦偷精品视频 | 国产农村乱对白刺激视频 | 欧洲精品码一区二区三区免费看 | 成人无码精品1区2区3区免费看 | 亚洲人成网站在线播放942 | 又黄又爽又色的视频 | 一本大道久久东京热无码av | 最新国产麻豆aⅴ精品无码 | 99久久精品无码一区二区毛片 | 久精品国产欧美亚洲色aⅴ大片 | 99视频精品全部免费免费观看 | 国产区女主播在线观看 | 欧美激情一区二区三区成人 | 亚洲日韩中文字幕在线播放 | 大地资源网第二页免费观看 | 久久综合香蕉国产蜜臀av | 人妻天天爽夜夜爽一区二区 | 国产乱码精品一品二品 | 在线观看国产午夜福利片 | 国产日产欧产精品精品app | 亚洲精品午夜国产va久久成人 | 国产农村乱对白刺激视频 | 亚洲精品一区国产 | 亲嘴扒胸摸屁股激烈网站 | 国产精品美女久久久 | 国产免费无码一区二区视频 | 色偷偷人人澡人人爽人人模 | 一本大道久久东京热无码av | 99久久久国产精品无码免费 | 精品久久久无码中文字幕 | 欧洲精品码一区二区三区免费看 | 国产精品久久久久影院嫩草 | 免费无码一区二区三区蜜桃大 | 欧美激情综合亚洲一二区 | 少妇一晚三次一区二区三区 | 2020久久香蕉国产线看观看 | 欧美午夜特黄aaaaaa片 | 鲁一鲁av2019在线 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产成人无码一二三区视频 | 乌克兰少妇性做爰 | 99riav国产精品视频 | 狠狠色色综合网站 | 国产内射老熟女aaaa | 国语精品一区二区三区 | 亚洲一区二区三区国产精华液 | 亚洲国产av精品一区二区蜜芽 | 亚洲熟妇自偷自拍另类 | 人妻人人添人妻人人爱 | 无遮挡国产高潮视频免费观看 | 日韩精品无码免费一区二区三区 | 国产性生交xxxxx无码 | 欧美日韩人成综合在线播放 | 鲁一鲁av2019在线 | 4hu四虎永久在线观看 | 丰满妇女强制高潮18xxxx | 女人和拘做爰正片视频 | 日本精品高清一区二区 | 思思久久99热只有频精品66 | 中文字幕人成乱码熟女app | 性色欲网站人妻丰满中文久久不卡 | 精品国产一区av天美传媒 | 亚洲va中文字幕无码久久不卡 | 麻豆成人精品国产免费 | 亚洲欧美综合区丁香五月小说 | 久久久久人妻一区精品色欧美 | 久久综合狠狠综合久久综合88 | 国产在热线精品视频 | 强辱丰满人妻hd中文字幕 | 精品久久久无码中文字幕 | 丝袜人妻一区二区三区 | 欧美喷潮久久久xxxxx | 久久久久av无码免费网 | 亚洲爆乳无码专区 | 午夜精品一区二区三区在线观看 | 小sao货水好多真紧h无码视频 | 天天燥日日燥 | 成人aaa片一区国产精品 | 色欲久久久天天天综合网精品 | 国产精品自产拍在线观看 | 久久人妻内射无码一区三区 | 国产亚洲精品久久久久久大师 | 色综合久久久无码中文字幕 | 欧美自拍另类欧美综合图片区 | 日韩无套无码精品 | 人妻天天爽夜夜爽一区二区 | 在线а√天堂中文官网 | 国产无遮挡吃胸膜奶免费看 | 欧美老熟妇乱xxxxx | 丰满人妻一区二区三区免费视频 | 性欧美疯狂xxxxbbbb | 国产麻豆精品一区二区三区v视界 | 2020久久超碰国产精品最新 | 丁香花在线影院观看在线播放 | 色老头在线一区二区三区 | 成人动漫在线观看 | 亚洲s码欧洲m码国产av | 国产精品亚洲а∨无码播放麻豆 | 国产亚洲精品久久久久久国模美 | 狠狠色色综合网站 | 女人被男人爽到呻吟的视频 | 97夜夜澡人人爽人人喊中国片 | 中文字幕人妻无码一夲道 | 国产成人精品一区二区在线小狼 | 黑森林福利视频导航 | 亚洲综合久久一区二区 | 婷婷丁香五月天综合东京热 | 亚洲熟妇色xxxxx欧美老妇 | 久久精品国产一区二区三区肥胖 | 亚洲国产一区二区三区在线观看 | 中文字幕av日韩精品一区二区 | 欧美成人高清在线播放 | 中文字幕精品av一区二区五区 | 西西人体www44rt大胆高清 | 日欧一片内射va在线影院 | 精品午夜福利在线观看 | 自拍偷自拍亚洲精品10p | 色爱情人网站 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 熟妇人妻激情偷爽文 | 国产卡一卡二卡三 | 无码国产乱人伦偷精品视频 | 国产人妖乱国产精品人妖 | 日本一区二区更新不卡 | www国产精品内射老师 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 内射老妇bbwx0c0ck | 人妻与老人中文字幕 | 欧美变态另类xxxx | 亚洲成av人片在线观看无码不卡 | 日本爽爽爽爽爽爽在线观看免 | 永久免费精品精品永久-夜色 | 国产在热线精品视频 | 黑人粗大猛烈进出高潮视频 | 亚洲综合无码一区二区三区 | 精品夜夜澡人妻无码av蜜桃 | 国产肉丝袜在线观看 | 无码精品人妻一区二区三区av | 国内少妇偷人精品视频免费 | 18精品久久久无码午夜福利 | 午夜精品一区二区三区在线观看 | 日产国产精品亚洲系列 | 日本肉体xxxx裸交 | 特大黑人娇小亚洲女 | 久久国产自偷自偷免费一区调 | 亚洲阿v天堂在线 | 久久人人爽人人人人片 | 黑人玩弄人妻中文在线 | 5858s亚洲色大成网站www | 亚洲s色大片在线观看 | 日本成熟视频免费视频 | 性生交片免费无码看人 | 国产真人无遮挡作爱免费视频 | 东京热无码av男人的天堂 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产两女互慰高潮视频在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久久无码中文字幕久... | 久久精品99久久香蕉国产色戒 | 精品久久久无码中文字幕 | 日本熟妇人妻xxxxx人hd | 性做久久久久久久免费看 | 亚洲伊人久久精品影院 | 精品一二三区久久aaa片 | 亚洲熟妇色xxxxx欧美老妇 | 99国产欧美久久久精品 | 亚洲乱码日产精品bd | 人人妻人人澡人人爽精品欧美 | 久久久久久久人妻无码中文字幕爆 | 老熟女重囗味hdxx69 | 久久国产精品二国产精品 | 国产色xx群视频射精 | 黑人粗大猛烈进出高潮视频 | 久久精品国产一区二区三区 | 欧美激情内射喷水高潮 | 久久久亚洲欧洲日产国码αv | 亚洲精品国偷拍自产在线观看蜜桃 | 老熟妇仑乱视频一区二区 | 内射爽无广熟女亚洲 | 亚洲va欧美va天堂v国产综合 | 给我免费的视频在线观看 | 一区二区三区乱码在线 | 欧洲 | 理论片87福利理论电影 | 精品无码国产一区二区三区av | 欧美放荡的少妇 | 人妻熟女一区 | 内射老妇bbwx0c0ck | 无码午夜成人1000部免费视频 | 99久久久无码国产精品免费 | 樱花草在线播放免费中文 | 欧美 日韩 亚洲 在线 | 精品偷拍一区二区三区在线看 | 桃花色综合影院 | 成人无码视频免费播放 | 爽爽影院免费观看 | 精品国产青草久久久久福利 | 国产午夜福利100集发布 | 内射爽无广熟女亚洲 | 丁香啪啪综合成人亚洲 | 久久99久久99精品中文字幕 | 十八禁真人啪啪免费网站 | 欧美一区二区三区 | 欧美性生交xxxxx久久久 | 亚洲中文字幕在线无码一区二区 | 国产性生大片免费观看性 | 亚洲国产成人a精品不卡在线 | 亚洲小说春色综合另类 | 国产 浪潮av性色四虎 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产精华av午夜在线观看 | 爽爽影院免费观看 | 国模大胆一区二区三区 | 国产高清不卡无码视频 | 六月丁香婷婷色狠狠久久 | 亚洲成色在线综合网站 | 人妻熟女一区 | 欧美性生交活xxxxxdddd | 精品国产精品久久一区免费式 | 一本久久伊人热热精品中文字幕 | 亚洲日韩av一区二区三区中文 | 高清国产亚洲精品自在久久 | 麻豆精产国品 | 麻豆国产人妻欲求不满谁演的 | 国产成人综合在线女婷五月99播放 | 国产精品久免费的黄网站 | 秋霞成人午夜鲁丝一区二区三区 | 日韩人妻少妇一区二区三区 | 波多野结衣av一区二区全免费观看 | 青春草在线视频免费观看 | 暴力强奷在线播放无码 | 午夜精品一区二区三区的区别 | 99久久精品无码一区二区毛片 | 亚洲人成网站色7799 | 99精品无人区乱码1区2区3区 | 婷婷五月综合激情中文字幕 | 国产精品无码mv在线观看 | 国产成人无码av片在线观看不卡 | 久久综合给合久久狠狠狠97色 | 樱花草在线播放免费中文 | 99久久精品午夜一区二区 | a在线观看免费网站大全 | 国产精品久久国产精品99 | 强辱丰满人妻hd中文字幕 | 久久国产精品偷任你爽任你 | 久久亚洲中文字幕无码 | 亚洲综合色区中文字幕 | 亚洲成a人片在线观看日本 | 久热国产vs视频在线观看 | 免费国产成人高清在线观看网站 | 亚洲精品一区国产 | 精品国产精品久久一区免费式 | 老熟女重囗味hdxx69 | 暴力强奷在线播放无码 | 国产 浪潮av性色四虎 | 亚洲日韩中文字幕在线播放 | 亚洲欧美综合区丁香五月小说 | 俺去俺来也在线www色官网 | 2019午夜福利不卡片在线 | 丰满人妻翻云覆雨呻吟视频 | 久久国产精品偷任你爽任你 | 亚洲国产午夜精品理论片 | 无码av最新清无码专区吞精 | 99久久久无码国产精品免费 | 国产麻豆精品一区二区三区v视界 | 在线а√天堂中文官网 | 女高中生第一次破苞av | 中文字幕av伊人av无码av | 欧美成人免费全部网站 | 少妇性l交大片欧洲热妇乱xxx | 日韩av无码中文无码电影 | 欧美成人午夜精品久久久 | 美女黄网站人色视频免费国产 | 青春草在线视频免费观看 | 自拍偷自拍亚洲精品10p | 成年美女黄网站色大免费全看 | 一区二区三区乱码在线 | 欧洲 | 欧美35页视频在线观看 | 欧美 日韩 人妻 高清 中文 | 亚洲精品中文字幕乱码 | 未满成年国产在线观看 | 国产人妻大战黑人第1集 | 日日摸夜夜摸狠狠摸婷婷 | 丰满少妇人妻久久久久久 | 曰韩无码二三区中文字幕 | 午夜福利一区二区三区在线观看 | 牛和人交xxxx欧美 | 国产精品99久久精品爆乳 | 亚洲天堂2017无码中文 | 又紧又大又爽精品一区二区 | 成熟人妻av无码专区 | 国产av无码专区亚洲awww | 丰满人妻精品国产99aⅴ | 综合网日日天干夜夜久久 | 性色欲网站人妻丰满中文久久不卡 | 无码乱肉视频免费大全合集 | 黑人巨大精品欧美黑寡妇 | 欧洲欧美人成视频在线 | 久久久久99精品国产片 | 在线观看欧美一区二区三区 | 国产精品高潮呻吟av久久4虎 | 少妇厨房愉情理9仑片视频 | 国产精品欧美成人 | 国产精品美女久久久久av爽李琼 | 熟女俱乐部五十路六十路av | 中文字幕无码人妻少妇免费 | 亚洲最大成人网站 | 国产精品久久国产精品99 | 东京无码熟妇人妻av在线网址 | 波多野结衣aⅴ在线 | 国产女主播喷水视频在线观看 | 亚洲国产一区二区三区在线观看 | 国产亚洲精品久久久久久久久动漫 | 内射白嫩少妇超碰 | 曰韩少妇内射免费播放 | 色婷婷香蕉在线一区二区 | 成人精品一区二区三区中文字幕 | 欧美第一黄网免费网站 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 午夜精品久久久久久久久 | 一本色道久久综合亚洲精品不卡 | 精品国产青草久久久久福利 | 性色欲情网站iwww九文堂 | 欧美野外疯狂做受xxxx高潮 | 亚洲日韩av一区二区三区四区 | 亚洲国产精华液网站w | 免费视频欧美无人区码 | 精品成人av一区二区三区 | 国产精品久久久久久亚洲影视内衣 | 久久国语露脸国产精品电影 | 鲁大师影院在线观看 | 日日天干夜夜狠狠爱 | 人妻夜夜爽天天爽三区 | 激情内射亚州一区二区三区爱妻 | 亚洲精品中文字幕久久久久 | 人人妻人人澡人人爽欧美精品 | 高清不卡一区二区三区 | 亚洲中文字幕无码中字 | 99久久精品无码一区二区毛片 | 国产成人亚洲综合无码 | 波多野结衣aⅴ在线 | 久久国语露脸国产精品电影 | 伊人色综合久久天天小片 | 免费无码一区二区三区蜜桃大 | 欧美日韩一区二区免费视频 | 日本一区二区三区免费播放 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲欧洲日本无在线码 | 日本护士毛茸茸高潮 | 欧美人与禽zoz0性伦交 | 国产精品二区一区二区aⅴ污介绍 | 波多野结衣av一区二区全免费观看 | 欧美老熟妇乱xxxxx | 亚洲另类伦春色综合小说 | 亚洲精品美女久久久久久久 | 亚洲精品美女久久久久久久 | 中文字幕久久久久人妻 | 国产亚洲美女精品久久久2020 | 99麻豆久久久国产精品免费 | 99国产欧美久久久精品 |