如果想要檢驗密碼的強度,要求能判斷數字、大寫字母、小寫字母及符号,這個功能對開發人員來說很簡單,但在Axure中,預設情況下是無法使用正規表達式的,是以對于密碼強度的校驗就比較困難。怎麼在Axure實作密碼強度校驗功能呢?本文作者對此進行了分析,一起來看一下吧。
有讀者提出了問題:“校驗一下密碼的強度?要求能夠判斷數字、大寫字母、小寫字母以及符号。”
如果是開發人員來實作此功能非常簡單,但是在Axure中,預設情況下是無法使用正規表達式的,是以對于密碼強度的校驗就變得有些困難,我們先依次來分析每種情況:
- 大寫字母:校驗大寫字母很簡單,隻需要将密碼轉為小寫形式(通過 .toLowerCase()方法) ,然後與原始密碼進行比較,如果它們相等,則說明密碼中沒有大寫字母。
- 小寫字母:同樣地,将密碼轉為大寫形式(通過 .toUpperCase()方法),然後與原始密碼比較,如果相等說明沒有小寫字母。
- 數字:由于數字隻有10個,是以可以采用“暴力窮舉”的方式來判斷(是否包含0、是否包含1……)但是這種方法不夠“優雅”!
- 特殊字元:常見的可在鍵盤上直接輸入的英文特殊字元在ASCII表裡分了好幾段:32-47、58-64、91-96、123-126都有,如果再用“暴力窮舉”的方式實在是太野蠻了,而且對于中國人來說,密碼裡塞幾個漢字或者全角字元好像也很正常,這種情況下窮舉顯然不現實,是以使用循環是比較好的辦法。
诶?等等!!循環???都要用循環了,那前面的分析沒就用了呀,直接用循環把每個字元都判斷一下不就好啦?
是以……以上文字都不重要了[手動狗頭]
一、基礎知識
為了本篇文章,我還專門寫了前置知識文章。如果你還不知道如何在Axure裡使用循環,請先參考:《如何在Axure中使用“循環”》
二、真·解決方案
老規矩,我們先看一下示範連結:https://usrsky.axshare.com/#id=thtdwf&g=1
這個示範密碼強度校驗實作了:
- 密碼和明文的切換顯示。
- 當密碼為空時,提示“密碼不能為空”
- 當密碼少于8位時,提示“密碼至少需要8位”
- 當密碼中沒有大寫字母時,提示“沒有大寫字母”
- 當密碼中沒有小寫字母時,提示“沒有小寫字母”
- 當密碼中沒有數字時,提示“沒有數字”
- 當密碼中沒有符号時,提示“沒有符号”
- 根據密碼的強度不同,依次使用“紅、橙、藍、綠”四色提示增強使用者體驗
- 可以在任意位置插入、修改和删除字元,即使使用滑鼠操作也能正确地進行校驗
三、基本教程
我們先從最最簡單的開始一步一步來,準備好以下元件:
- 一個文本框(命名:Password),用來輸入密碼。在測試時,可以先将其設定為文本,成功後再把輸入類型改為“密碼”。
- 一個文本框(命名:Loop),用來做循環計數。
- 一個文本字段(命名:Message),用于回報資訊。
- 一個“校驗密碼強度”按鈕(命名:校驗密碼強度)。
- 四個複選框(分别命名:大寫、小寫、數字、字元),用于來記錄對應類型是否存在。
首先,我們需要在“校驗密碼強度”按鈕上編寫互動事件:
由于很多時候需要使用到Loop裡的文本值,是以可着物盡其用的原則,是以我們将盡可能多的互動事件都寫在Loop文本框上,分别使用“尺寸改變時、移動時、選中或切換選中時”吧:
Loop的“尺寸改變時”,用來做做循環的判斷:
Loop的“移動時”,用來判斷每一個字元的類别。其中pwd變量是Password元件的文本:
其中“其它”的判斷稍微有點複雜,需要判斷好幾個區間。(注意右上角:符合任意條件)
Loop的“選中或取消選中時”,用于做最終總結:
這樣一個基本的密碼強度校驗功能就做好啦。
四、進階教程
接下來讓我們進行一些進階教程。對于之前實作的功能,還有一些可以優化的方面:
- 添加明碼和密文轉換功能。
- 在符号範圍判斷時應該考慮全角符号和雙位元組文字。
- 可以限制每種類型字元的最少出現次數等。
- 為避免影響效率,可以限制密碼框中輸入文本的長度。
- 如果四個複選框都被選中,則無需再對後續字元做檢查,應該增加相應判斷。
- 應該增加一個可視化的強度展示,提升使用者體驗。
- 其它還有很多我沒想到的,可以評論區補充。
前個都幾個好解決,我們将重點介紹如何實作可視化強度展示:
在前面做好的原型基礎上,準備一個動态面闆,包含5個狀态,分别為(空、25%紅色、50%橙色、75%藍色、100%綠色)。
在“校驗密碼強度”按鈕的點選事件中,增加一步用于重置動态面闆狀态的操作。
順便将循環邏輯優化一下:
在字元類型的判斷上删除全部的區間判斷,允許全角符号及雙位元組文字:
在最終判斷時加入對動态面闆的改變,這裡不需要判斷目前狀态,直接下一項即可:
最後,預覽我們完成的成果。
五、總結
使用循環可以對密碼文本的全部字元進行類型判斷,無論在何處增加、修改或删除。為提升使用者體驗,我們還可以增加一些優化功能,如文本框轉換、符号範圍限制、最少個數限制等,并且通過可視化強度展示讓使用者更直覺地了解密碼強度。
本文由 @Jorkin 原創釋出于人人都是産品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協定
該文觀點僅代表作者本人,人人都是産品經理平台僅提供資訊存儲空間服務。