【vue学习】权限管理系统前端实现5-登录功能记住密码功能实现

1.登录逻辑

import {ref} from "vue";
  import requestUtil from '@/util/request'
  import qs from "qs";
  import {ElMessage} from "element-plus";
  import store from "@/store";

  const loginRef = ref(null)

  const loginForm = ref({
    username:"",
    password:""
  })

  const loginRules = {
    username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],
    password: [{ required: true, trigger: "blur", message: "请输入您的密码" }]
  };

  const handleLogin=()=>{
    loginRef.value.validate(async (valid)=>{
      if(valid){
        try{
          let result=await requestUtil.post("login?"+qs.stringify(loginForm.value))
          let data=result.data;
          if(data.code==200){
            const token = data.authorization;
            store.commit('SET_TOKEN',token);
          }else{
            ElMessage.error(data.msg)
          }
        }catch(error){
          console.log("error:"+error);
          ElMessage.error("服务器出错,请联系管理员!")
        }
      }else{
        console.log("验证失败")
      }
    })
  }

        1.ref

   ref 的作用是将数据包装成一个响应式的引用,使得数据的变化可以被 Vue 自动追踪,并触发相应的重新渲染。当使用 ref 创建的数据引用发生变化时,可以通过 .value 属性来访问引用的实际值,例如 loginRef.valueloginForm.value

        2.方法写法

        const handleLogin = () => { ... }:这行代码使用箭头函数的语法将一个匿名函数赋值给 handleLogin 变量。箭头函数是 JavaScript 中的一种函数定义方式,它可以简洁地定义一个函数而不需要使用 function 关键字。

        = () => 是箭头函数的语法,用于定义一个没有参数的函数。

        3.async 和 await 来配合实现等待异步操作

        4.loginRef.value.validate(async (valid)=>{}进行表单验证 验证方法是 loginRules

2.安装依赖

记住密码,我们通过cookie来实现,先安装依赖 'js-cookie'

存储用户密码,为了安全需要加密,获取密码解密。所以我们安装依赖'jsencrypt'

util下新建jsencrypt.js

import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'

// 密钥对生成 http://web.chacuo.net/netrsakeypair

const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
  'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='

const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
  '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
  'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
  'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
  'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
  'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
  'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
  'UP8iWi1Qw0Y='

// 加密
export function encrypt(txt) {
  const encryptor = new JSEncrypt()
  encryptor.setPublicKey(publicKey) // 设置公钥
  return encryptor.encrypt(txt) // 对数据进行加密
}

// 解密
export function decrypt(txt) {
  const encryptor = new JSEncrypt()
  encryptor.setPrivateKey(privateKey) // 设置私钥
  return encryptor.decrypt(txt) // 对数据进行解密
}

3.记住密码逻辑


    // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码
    if (loginForm.value.rememberMe) {
      Cookies.set("username", loginForm.value.username, { expires: 30 });
      Cookies.set("password", encrypt(loginForm.value.password), { expires: 30 });
      Cookies.set("rememberMe", loginForm.value.rememberMe, { expires: 30 });
    } else {
      // 否则移除
      Cookies.remove("username");
      Cookies.remove("password");
      Cookies.remove("rememberMe");
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值