天天看點

Axure中的密碼強度校驗

作者:人人都是産品經理
如果想要檢驗密碼的強度,要求能判斷數字、大寫字母、小寫字母及符号,這個功能對開發人員來說很簡單,但在Axure中,預設情況下是無法使用正規表達式的,是以對于密碼強度的校驗就比較困難。怎麼在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

這個示範密碼強度校驗實作了:

  1. 密碼和明文的切換顯示。
  2. 當密碼為空時,提示“密碼不能為空”
  3. 當密碼少于8位時,提示“密碼至少需要8位”
  4. 當密碼中沒有大寫字母時,提示“沒有大寫字母”
  5. 當密碼中沒有小寫字母時,提示“沒有小寫字母”
  6. 當密碼中沒有數字時,提示“沒有數字”
  7. 當密碼中沒有符号時,提示“沒有符号”
  8. 根據密碼的強度不同,依次使用“紅、橙、藍、綠”四色提示增強使用者體驗
  9. 可以在任意位置插入、修改和删除字元,即使使用滑鼠操作也能正确地進行校驗

三、基本教程

我們先從最最簡單的開始一步一步來,準備好以下元件:

  • 一個文本框(命名:Password),用來輸入密碼。在測試時,可以先将其設定為文本,成功後再把輸入類型改為“密碼”。
  • 一個文本框(命名:Loop),用來做循環計數。
  • 一個文本字段(命名:Message),用于回報資訊。
  • 一個“校驗密碼強度”按鈕(命名:校驗密碼強度)。
  • 四個複選框(分别命名:大寫、小寫、數字、字元),用于來記錄對應類型是否存在。
Axure中的密碼強度校驗

首先,我們需要在“校驗密碼強度”按鈕上編寫互動事件:

Axure中的密碼強度校驗

由于很多時候需要使用到Loop裡的文本值,是以可着物盡其用的原則,是以我們将盡可能多的互動事件都寫在Loop文本框上,分别使用“尺寸改變時、移動時、選中或切換選中時”吧:

Loop的“尺寸改變時”,用來做做循環的判斷:

Axure中的密碼強度校驗

Loop的“移動時”,用來判斷每一個字元的類别。其中pwd變量是Password元件的文本:

Axure中的密碼強度校驗

其中“其它”的判斷稍微有點複雜,需要判斷好幾個區間。(注意右上角:符合任意條件)

Axure中的密碼強度校驗

Loop的“選中或取消選中時”,用于做最終總結:

Axure中的密碼強度校驗

這樣一個基本的密碼強度校驗功能就做好啦。

四、進階教程

接下來讓我們進行一些進階教程。對于之前實作的功能,還有一些可以優化的方面:

  • 添加明碼和密文轉換功能。
  • 在符号範圍判斷時應該考慮全角符号和雙位元組文字。
  • 可以限制每種類型字元的最少出現次數等。
  • 為避免影響效率,可以限制密碼框中輸入文本的長度。
  • 如果四個複選框都被選中,則無需再對後續字元做檢查,應該增加相應判斷。
  • 應該增加一個可視化的強度展示,提升使用者體驗。
  • 其它還有很多我沒想到的,可以評論區補充。

前個都幾個好解決,我們将重點介紹如何實作可視化強度展示:

在前面做好的原型基礎上,準備一個動态面闆,包含5個狀态,分别為(空、25%紅色、50%橙色、75%藍色、100%綠色)。

Axure中的密碼強度校驗

在“校驗密碼強度”按鈕的點選事件中,增加一步用于重置動态面闆狀态的操作。

Axure中的密碼強度校驗

順便将循環邏輯優化一下:

Axure中的密碼強度校驗

在字元類型的判斷上删除全部的區間判斷,允許全角符号及雙位元組文字:

Axure中的密碼強度校驗

在最終判斷時加入對動态面闆的改變,這裡不需要判斷目前狀态,直接下一項即可:

Axure中的密碼強度校驗

最後,預覽我們完成的成果。

五、總結

使用循環可以對密碼文本的全部字元進行類型判斷,無論在何處增加、修改或删除。為提升使用者體驗,我們還可以增加一些優化功能,如文本框轉換、符号範圍限制、最少個數限制等,并且通過可視化強度展示讓使用者更直覺地了解密碼強度。

本文由 @Jorkin 原創釋出于人人都是産品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協定

該文觀點僅代表作者本人,人人都是産品經理平台僅提供資訊存儲空間服務。

繼續閱讀