WinForm框架開發教程 - 窗體基類的用戶身份信息的緩存和提取

WinForm開發中,有時候爲了方便,需要把窗體的一些常規性的數據和操作函數進行封裝,通過自定義基類窗體的方式,可以實現這些封裝管理,讓我們的框架統一化、簡單化的處理一些常規性的操作,如這裏介紹的用戶身份信息的緩存和提取。通過基類的封裝,可以大大減少常規性的代碼,這個也是基類封裝的目的所在。

一、用戶登錄獲得身份信息並緩存

用戶登錄界面,通過獲得用戶的賬號密碼進行登錄驗證,如下界面所示。

窗體基類的用戶身份信息的緩存和提取 - 圖1

登錄過程如下所示,成功後獲得用戶的身份信息並緩存起來待用,畢竟系統界面,大多數都需要獲得用戶的信息的。

窗體基類的用戶身份信息的緩存和提取 - 圖2

獲得用戶的身份信息後,調用SetLoginInfo設置緩存數據,以備後用。

窗體基類的用戶身份信息的緩存和提取 - 圖3

通過上面的處理,用戶身份信息,權限信息,角色信息,都可以一次性獲得,供各個界面上使用了。

二、基類窗體的用戶身份提取

這裏的LoginUserInfo是窗體基類的一個屬性,這個屬性通過兩種方式獲得,一個是通過用戶在調用窗體顯示前進行指定,一種是通過基類自動把緩存裏面的用戶對象賦值。

如下面的代碼就是界面基類BaseForm的部分代碼。

namespace WHC.Framework.BaseUI
{
/// <summary>
/// 常規界面基類
/// </summary>
public partial class BaseForm : DevExpress.XtraEditors.XtraForm, IFunction
{
public event EventHandler OnDataSaved;//子窗體數據保存的觸發

public BaseForm()
{
InitializeComponent();

//爲了保證一些界面控件的權限控制和身份確認,以及簡化操作,在界面初始化的時候,從緩存裏面內容(如果存在的話)
//繼承的子模塊,也可以通過InitFunction()進行指定用戶相關信息
this.LoginUserInfo = Cache.Instance["LoginUserInfo"] as LoginUserInfo;
this.FunctionDict = Cache.Instance["FunctionDict"] as Dictionary<string, string>;
}

這樣界面基類實例化的時候,就會自動獲取用戶信息了,這個操作類似於Web領域裏面的Session操作,只要存儲/獲取的鍵值保存一致即可。

窗體基類的用戶身份信息的緩存和提取 - 圖4

用戶組件,也可以通過這樣類似的方式定義一個基類,以後所有自定義用戶組件,就很方便獲得用戶的身份信息了,如下代碼所示。

窗體基類的用戶身份信息的緩存和提取 - 圖5

在窗體界面上,可以放置很多模塊,模塊通過窗體獲得用戶身份信息、角色信息等進行初始化的判斷。

窗體基類的用戶身份信息的緩存和提取 - 圖6

最終在主體界面中整合的是一個個模塊,每個模塊裏面又有不同的窗體界面可供使用,但是都能通過緩存獲得用戶身份信息,數據處理起來就非常方便了。

窗體基類的用戶身份信息的緩存和提取 - 圖7

對於業務報銷信息,我們可以根據用戶身份信息,迅速獲得對應的記錄列表,以及在修改的時候,記錄用戶的身份信息。

窗體基類的用戶身份信息的緩存和提取 - 圖8

如新增一條主表記錄的時候,那麼可以彈出一個新的界面進行數據的維護處理,界面如下所示。

窗體基類的用戶身份信息的緩存和提取 - 圖9

或者類似下面的界面處理。

窗體基類的用戶身份信息的緩存和提取 - 圖10

DevExpress WinForm界面控件| 下載試用

DevExpress WinForm擁有180+組件和UI庫,能爲Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易於使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕鬆勝任!

本文轉載自:博客園 - 伍華聰


DevExpress技術交流羣4:715863792      歡迎一起進羣討論

更多DevExpress線上公開課、中文教程資訊請上中文網獲取

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章