经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue3生成随机密码的示例代码
来源:jb51  时间:2022/6/20 12:22:18  对本文有异议

实现效果

实现思路

  • 完成布局
  • 完成生成随机数的方法
  • 完成生成随机密码的方法

完成布局

布局直接用element-plus组件库里的el-from+checkbox完成一个简单的表单布局即可。

完成生成随机数的方法

这里我们要四种随机数,大写字母、小写字母、数字、特殊符号。这里实现有两种方式。

第一种直接定义四个字符串,第一个字符串存所有的大写字母、第二个字符串存所有的小写字母、第三个所有的数字、第四个所有的特殊符号。

第二种使用Unicode编码。将随机数对应大写字母、小写字母、数字Unicode编码的范围取出对应的结果。 大写字母是65-90、小写字母是97-122,数字是48-57。

这两种都要使用Math.floor(Math.random()) 获取随机数。我这里用第二种方法

完成生成随机密码的方法

定义一个数组对象。每个对象有funcName:对应随机数方法名,label:左侧标签名,checked:选中状态。循环密码长度,每次增加选择密码种类数量,遍历定义的数组对象,判断是否是选中状态,如果是调用该种类的随机方法,每次将返回的值拼接。循环完随机密码生成成功。

部分代码

  1. <script>
  2. import { reactive, toRefs } from "vue";
  3. export default {
  4. components: {},
  5. setup() {
  6. const state = reactive({
  7. form: {
  8. padLength: 8
  9. },
  10. typeList: [
  11. {
  12. id: 1,
  13. funcName:'IsUpper',
  14. label: '包括大写字母',
  15. checked: true
  16. },
  17. {
  18. id: 2,
  19. funcName:'IsLower',
  20. label: '包括小写字母',
  21. checked: true
  22. },
  23. {
  24. id: 3,
  25. funcName:'Isnumber',
  26. label: '包括数字',
  27. checked: true
  28. },
  29. {
  30. id: 4,
  31. funcName:'IsCharacter',
  32. label:'包括符号',
  33. checked: true
  34. }
  35. ],
  36. password: ''
  37. });
  38. const getRandomLower = () => {
  39. return String.fromCharCode(Math.floor(Math.random() * 26) + 97)
  40. }
  41. const getRandomUpper = () => {
  42. return String.fromCharCode(Math.floor(Math.random() * 26) + 65)
  43. }
  44. const getRandomNumber = () => {
  45. return String.fromCharCode(Math.floor(Math.random() * 10) + 48)
  46. }
  47. const getRandomCharacter = () => {
  48. const characters = '!@#$%^&*(){}[]=<>/,.'
  49. return characters[Math.floor(Math.random() * characters.length)]
  50. }
  51. let randomFunc = {
  52. IsUpper: getRandomUpper,
  53. IsLower: getRandomLower,
  54. Isnumber: getRandomNumber,
  55. IsCharacter: getRandomCharacter
  56. }
  57. const getPassword = () => {
  58. state.password = ''
  59. let typesCount = 0
  60. state.typeList.forEach(v=>{
  61. typesCount += v.checked
  62. })
  63. if(typesCount === 0) {
  64. state.password = ''
  65. }
  66.  
  67. for(let i = 0; i < state.form.padLength; i += typesCount) {
  68. state.typeList.forEach(item => {
  69. if(item.checked){
  70. state.password += randomFunc[item.funcName]()
  71. }
  72. })
  73. }
  74.  
  75. }
  76.  
  77. return {
  78. ...toRefs(state),
  79. getRandomLower,
  80. getRandomUpper,
  81. getRandomNumber,
  82. getRandomCharacter,
  83. getPassword
  84. };
  85. },
  86. };
  87. </script>

总结

  • Math.floor、Math.random生成随机数的使用
  • unicode编码、String.fromCharCode方法的使用

到此这篇关于vue3生成随机密码的示例代码的文章就介绍到这了,更多相关vue3生成随机密码内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号