当前位置:   article > 正文

Vue3实现记住密码功能

Vue3实现记住密码功能

1.首先安装 js-cookie、jsencrypt

npm  i js-cookie  // 使用Cookie来实现记住密码功能

npm  i jsencrypt  //使用jsencrypt进行加密解密

2.完整代码 

注:在此我使用了ant-design-vue组件库  若使用源码请自行配置ant-design-vue

  1. <template>
  2. <h2 :style="{marginLeft:'45%'}">记住密码demo</h2>
  3. <a-form
  4. :model="formState"
  5. name="basic"
  6. :label-col="{ span: 6 }"
  7. :wrapper-col="{ span: 12 }"
  8. autocomplete="off"
  9. @finish="onFinish"
  10. @finishFailed="onFinishFailed"
  11. >
  12. <a-form-item label="用户名" name="username">
  13. <a-input v-model:value="formState.username" />
  14. </a-form-item>
  15. <a-form-item label="密码" name="password">
  16. <a-input-password v-model:value="displayPassword" />
  17. </a-form-item>
  18. <a-form-item name="remember" :wrapper-col="{ offset: 6, span: 12 }">
  19. <a-checkbox v-model:checked="formState.remember">记住我</a-checkbox>
  20. </a-form-item>
  21. <a-form-item :wrapper-col="{ offset: 6, span: 12 }">
  22. <a-button type="primary" html-type="submit">登录</a-button>
  23. </a-form-item>
  24. </a-form>
  25. </template>
  26. <script setup>
  27. import { reactive,computed, onMounted } from "vue";
  28. import Cookies from "js-cookie";
  29. import JSEncrypt from "jsencrypt/bin/jsencrypt.min";
  30. const formState = reactive({
  31. username: Cookies.get("username") ? Cookies.get("username") : "",
  32. password: "",
  33. remember: false,
  34. });
  35. const displayPassword = computed({
  36. get: () => {
  37. // 在这里解密密码,仅当有加密的密码存储时才执行解密
  38. if (Cookies.get("username")) {
  39. return decrypt(Cookies.get("password"));
  40. }
  41. return ""; // 如果没有加密密码,则返回空字符串
  42. },
  43. set: (val) => (formState.password = val),
  44. });
  45. const publicKey = ''; //公钥
  46. const privateKey = ''; //私钥
  47. const onFinish = (values) => {
  48. if (formState.remember) {
  49. Cookies.set("username", formState.username, { expires: 7 }); //设置有效期为7
  50. Cookies.set("password", encrypt(formState.password), { expires: 7 }); //对密码进行加密
  51. } else {
  52. Cookies.remove("username");
  53. Cookies.remove("password");
  54. }
  55. };
  56. // 加密
  57. const encrypt = (val) => {
  58. const encryptor = new JSEncrypt();
  59. encryptor.setPublicKey(publicKey); // 设置公钥
  60. return encryptor.encrypt(val); // 对数据进行加密
  61. };
  62. // 解密
  63. const decrypt = (val) => {
  64. const encryptor = new JSEncrypt();
  65. encryptor.setPrivateKey(privateKey); // 设置私钥
  66. return encryptor.decrypt(val); // 对数据进行解密
  67. };
  68. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/768335
推荐阅读
相关标签
  

闽ICP备14008679号