惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
量子位
腾讯CDC
A
About on SuperTechFans
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
T
Tailwind CSS Blog
V
V2EX
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
罗磊的独立博客
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
V
Visual Studio Blog
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
有赞技术团队
有赞技术团队

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
Axure中的密码强度校验
Jorkin · 2023-05-06 · via 人人都是产品经理

如果想要检验密码的强度,要求能判断数字、大写字母、小写字母及符号,这个功能对开发人员来说很简单,但在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),用于反馈信息。
  • 一个“校验密码强度”按钮(命名:校验密码强度)。
  • 四个复选框(分别命名:大写、小写、数字、字符),用于来记录对应类型是否存在。

首先,我们需要在“校验密码强度”按钮上编写交互事件:

由于很多时候需要使用到Loop里的文本值,所以可着物尽其用的原则,因此我们将尽可能多的交互事件都写在Loop文本框上,分别使用“尺寸改变时移动时选中或切换选中时”吧:

Loop的“尺寸改变时”,用来做做循环的判断:

Loop的“移动时”,用来判断每一个字符的类别。其中pwd变量是Password元件的文本:

其中“其它”的判断稍微有点复杂,需要判断好几个区间。(注意右上角:符合任意条件)

Loop的“选中或取消选中时”,用于做最终总结:

这样一个基本的密码强度校验功能就做好啦。

四、进阶教程

接下来让我们进行一些进阶教程。对于之前实现的功能,还有一些可以优化的方面:

  • 添加明码和密文转换功能。
  • 在符号范围判断时应该考虑全角符号和双字节文字。
  • 可以限制每种类型字符的最少出现次数等。
  • 为避免影响效率,可以限制密码框中输入文本的长度。
  • 如果四个复选框都被选中,则无需再对后续字符做检查,应该增加相应判断。
  • 应该增加一个可视化的强度展示,提升用户体验。
  • 其它还有很多我没想到的,可以评论区补充。

前个都几个好解决,我们将重点介绍如何实现可视化强度展示:

在前面做好的原型基础上,准备一个动态面板,包含5个状态,分别为(空、25%红色、50%橙色、75%蓝色、100%绿色)。

在“校验密码强度”按钮的点击事件中,增加一步用于重置动态面板状态的操作。

顺便将循环逻辑优化一下:

在字符类型的判断上删除全部的区间判断,允许全角符号及双字节文字:

在最终判断时加入对动态面板的改变,这里不需要判断当前状态,直接下一项即可:

最后,预览我们完成的成果。

五、总结

使用循环可以对密码文本的全部字符进行类型判断,无论在何处增加、修改或删除。为提升用户体验,我们还可以增加一些优化功能,如文本框转换、符号范围限制、最少个数限制等,并且通过可视化强度展示让用户更直观地了解密码强度。

本文由 @Jorkin 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。