2018年到了叹坦。新年伊始卑雁,我們的APP就被人盯上了绪囱,不斷有人狂刷發(fā)送驗證碼莹捡,一天刷了幾萬次。雖然后臺也做了限制道盏,攔截了一大部分請求,苦于對方Ip一直在變,技術(shù)不夠不能將其徹底殺死粹排。我們添加了圖形驗證碼來解決這個問題种远,后期還會優(yōu)化服務(wù)端請求顽耳,采用更加安全的方式,先來介紹圖形驗證碼吧射富。
思路:根據(jù)隨機數(shù)獲取圖形驗證碼,然后校驗圖形驗證碼胰耗,校驗通過則允許發(fā)送驗證碼限次;
隨機數(shù)的生成規(guī)則:后臺自定義規(guī)定的卖漫,我們是32位字母加數(shù)字,字母大寫
貼上我的隨機數(shù)生成:
- (NSString *)return32LetterAndNumber:(NSInteger)num{
//定義一個包含數(shù)字赠群,大小寫字母的字符串
NSString * strAll = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSString * result = [[NSMutableString alloc]initWithCapacity:num];
for (int i = 0; i < num; i++){
NSInteger index = arc4random() % (strAll.length-1);
char tempStr = [strAll characterAtIndex:index];
result = (NSMutableString *)[result stringByAppendingString:[NSString stringWithFormat:@"%c",tempStr]];
}
return result;
}
開發(fā)中遇到一些小問題,測試說圖形驗證碼輸入正確后點擊鍵盤的done查描,卻顯示檢驗失敗。我調(diào)試看到系統(tǒng)鍵盤點擊done時發(fā)現(xiàn)冬三,你正確輸入的關(guān)鍵詞是第一個,但是默認(rèn)選中的是第二個推薦詞!
出現(xiàn)兩個問題:
1长豁、text filed 有個特性钧唐,手動選擇第一個推薦詞他會在后面自動添加一個空格钝侠,導(dǎo)致校驗失敻迷啊帅韧;
2里初、點擊鍵盤的done 忽舟,很容易忽略鍵盤選中提交的是第二個關(guān)鍵詞也校驗失敗
。 如圖所示:
解決辦法叮阅;
將textField 的推薦關(guān)鍵詞功能關(guān)掉,以前一直忽略的這個屬性浩姥;
代碼是:
{
textField.autocorrectionType = UITextAutocorrectionTypeNo;
}
這樣就能完美解決這個圖形驗證碼的問題拉