開源.NetCore通用工具庫Xmtool使用連載

2023-09-08 06:00:24

【Github原始碼】


《上一篇》 介紹了Xmtool工具庫中的Web操作類庫,今天我們繼續為大家介紹其中的圖形驗證碼類庫。

圖形驗證碼是為了抵禦惡意攻擊出現的一種設計;例如使用者登入、修改密碼等場景。在本類庫中,將圖形驗證碼的邏輯進行了抽象封裝,能夠通過同一套方法使用不同型別的圖形驗證碼;讓增加圖形驗證碼邏輯變得更方便友好,且切換不同型別的圖形驗證碼更簡易。

使用時,需要先獲取圖形驗證碼類庫物件:

ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);	// 字元驗證碼
// 或者
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Sliding);	// 滾軸驗證碼

ICaptcha介面提供了設定、生成和校驗 3 個方法,通過這 3 個方法可以很方便的將圖形驗證碼能力嵌入到自己的軟體功能中。

Config方法

Generate方法

Validate方法

Type屬性

1. Config方法

public ICaptcha Config(CaptchaOption option);
說明:設定圖形驗證碼生成規則,根據圖形驗證碼不同的型別,需傳入不同的引數設定類。
引數:

option:生成引數設定;字元驗證碼使用CharacterCaptchaOption設定類,滾軸驗證碼使用SlidingCaptchaOption設定類。

ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);

CharacterCaptchaOption option = new CharacterCaptchaOption();
option.BackColor = Color.Blue;
option.BorderColor = Color.DarkBlue;
captcha.Config(option);

// TODO

2. Generate方法

public CaptchaResult Generate(CaptchaData data = null);
說明:根據引數設定生成圖形驗證碼圖片及相關資料。
引數:

data:生成資料設定,預設不設定將隨機生成;字元驗證碼使用CharacterCaptchaData類,滾軸驗證碼使用SlidingCaptchaData類。

返回:

將返回生成的圖片資料(Base64格式)和相關校驗性資料。

ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);
CharacterCaptchaData data = new CharacterCaptchaData();
data.Code = "1234";
CaptchaResult result = captcha.Generate(data);
// TODO

3. Validate方法

public bool Validate(object source, object input);
說明:將使用者輸入資訊和生成資料進行對比,判斷圖形驗證碼輸入或操作是否正確。
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character);
CaptchaResult result = captcha.Generate();
bool ok = captcha.Validate(result.ValidationData, "使用者輸入資料");
if (ok)
{
    // TODO
}

4. Type屬性

說明:返回當前範例的驗證碼型別,CaptchaKind.Character(字元驗證碼)或CaptchaKind.Sliding(滾軸驗證碼)。

附加說明

一、CharacterCaptchaOption類

該類用於為字元圖形驗證碼設定生成過程的一些設定資訊。

1. Length屬性

說明:設定字元驗證碼的個數,預設6個字元。

2. OnlyNumber屬性

說明:生成的字元驗證碼是否只包含數位,預設為true;否則包含數位和英文字母。

3. Width屬性

說明:設定字元驗證碼整體圖片的寬度,預設300。

4. Height屬性

說明:設定字元驗證碼整體圖片的高度,預設120。

5. BackColor屬性

說明:設定字元驗證碼整體圖片的背景顏色,預設白色。

6. Bordercolor屬性

說明:設定字元驗證碼整體圖片的邊框顏色,預設淺灰。

二、SlidingCaptchaOption類

該類用於為滾軸驗證碼設定生成過程的一些設定資訊。

1. BackgroundDir屬性

說明:設定滾軸驗證碼背景圖片的存放目錄。

2. ResultError屬性

說明:設定滾軸驗證碼校驗時允許的位置偏差百分比,預設0.02。

三、CharacterCaptchaData類

該類用於設定生成字元驗證碼內容的指定。

1. Code屬性

說明:字元驗證碼預設隨機生成字元內容,通過該屬性可以指定生成內容。

四、SlidingCaptchaData類

該類用於設定生成滾軸驗證碼的規格資訊。

1. GapX屬性

說明:滾軸凹槽生成的橫向座標位置,預設隨機生成。

2. GapY屬性

說明:滾軸凹槽生成的縱向座標位置,預設隨機生成。

3. GapTemplate屬性

說明:滾軸凹槽的形狀,支援0-4五種形狀,預設隨機選擇。

五、CaptchaResult類

該類用於返回圖形驗證碼生成的具體內容。

1. ValidationData屬性

說明:用於圖形驗證碼進行校驗的資料。字元驗證碼是字元驗證碼生成的字元內容;滾軸驗證碼是凹槽橫向座標和圖片整體寬度的百分數。該資料即是使用Validate方法時的souce引數。

2. DisplayData屬性

說明:圖形驗證碼生成圖片資料,以Base64圖片格式返回,可以直接複製到瀏覽器位址列檢視。字元驗證碼直接返回圖片資料內容;滾軸驗證碼返回包括圖片的寬度、高度、背景圖片資料內容、滾軸圖片的寬度、高度、滾軸圖片的資料內容,中間使用「|」分隔。


【Github原始碼】