《上一篇》 介紹了Xmtool工具庫中的Web操作類庫,今天我們繼續為大家介紹其中的圖形驗證碼類庫。
圖形驗證碼是為了抵禦惡意攻擊出現的一種設計;例如使用者登入、修改密碼等場景。在本類庫中,將圖形驗證碼的邏輯進行了抽象封裝,能夠通過同一套方法使用不同型別的圖形驗證碼;讓增加圖形驗證碼邏輯變得更方便友好,且切換不同型別的圖形驗證碼更簡易。
使用時,需要先獲取圖形驗證碼類庫物件:
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Character); // 字元驗證碼
// 或者
ICaptcha captcha = Xmtool.Captcha(CaptchaKind.Sliding); // 滾軸驗證碼
ICaptcha介面提供了設定、生成和校驗 3 個方法,通過這 3 個方法可以很方便的將圖形驗證碼能力嵌入到自己的軟體功能中。
Config方法
Generate方法
Validate方法
Type屬性
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
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
說明:將使用者輸入資訊和生成資料進行對比,判斷圖形驗證碼輸入或操作是否正確。
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圖片格式返回,可以直接複製到瀏覽器位址列檢視。字元驗證碼直接返回圖片資料內容;滾軸驗證碼返回包括圖片的寬度、高度、背景圖片資料內容、滾軸圖片的寬度、高度、滾軸圖片的資料內容,中間使用「|」分隔。