Vue3 axios配置以及cookie的使用方法实例演示

 更新时间:2023年02月18日 13:26:54   作者:Nanchen_42  
这篇文章主要介绍了Vue3 axios配置以及cookie的使用方法,需要的朋友可以参考下

调用验证码方法

在Request.js也就是axios中添加切换验证码方法

  // 请求后拦截
  instants.interceptors.response.use(
    (response) => {
      if (showLoading && loading) {
        loading.close();
      }
      const responseData = response.data;
      if (responseData.status == "error") {
        // 如果触发了errorCallback函数,那么就让他切换验证码
        if (config.errorCallback) {
          config.errorCallback()
        }
        // 结尾
        return Promise.reject(responseData.info);
      } else {
        return responseData;
      }
    },
    (error) => {
      if (showLoading && loading) {
        loading.close();
      }
      return Promise.reject("网络异常");
    }
  );

在Login.vue的请求接口中使用errorCallback方法
封装的验证码地址写法如下

const api={
  checkCode:'api/checkCode',
  login:"login"
}
const formDataRef = ref()
const fromData = reactive({});
// 切换验证码
const checkCodeUrl = ref(api.checkCode);
const changeCheckCode = ()=>{
  checkCodeUrl.value = api.checkCode + "?" +new Date().getTime();
}
const login = ()=>{
  // validate
  formDataRef.value.validate(async(valid)=>{
    if (!valid) {
      return;
    }
    let result = await proxy.Request({
      url:api.login,
      params:{
        account:fromData.account,
        // 这里需要通过md5进行加密
        password:md5(fromData.password),
        checkCode:fromData.checkCode
        // 触发验证码错误时切换验证码
      },errorCallback:()=>{
        changeCheckCode()
      }
    })
    if (result) {
      return;
    }
  })
}

登录有两种验证方案,可以使用token验证或者用cookie验证,这里说一下Cookie验证

Cookie使用方法

安装cookie

 npm i vue-cookies --save

登录时可以不需要使用token去验证,cookie里已存在,这个还是根据后端用token还是cookie验证,自己写的话可以设置cookie模式

引入cookie

import VueCookies from 'vue-cookies';

存贮cookie

    const loginInfo = {
      account :params.account,
      password:params.password,
    }
    console.log(loginInfo);
    // 永不过期
    /* 如果得点击记住密码之后那么就让他的状态,也就是cookie值永不过期,直到他自己过期 */
   VueCookies.set("userInfo",result.data,0);
   /* 如果他点击了记住我那么就让他记录七天 */
    if(fromData.rememberMe){
      VueCookies.set("loginInfo",loginInfo,'7d')
    }

最后得到cookie在页面加载时显示得到的账号以及密码

const init=()=>{
  const loginInfo= VueCookies.get('loginInfo');
  if (!loginInfo) {
    return
  }
  /* 转成对象 */
  Object.assign(fromData,loginInfo)
}
init();

点击登录执行的完整方法:

const login = () => {
  // 加载状态
  loading.value = true;
  // elm自带方法
  formDataRef.value.validate(async (valid) => {
    if (!valid) {
      loading.value = false;
      return;
    }
    // 得到账号,密码以及记住密码
    let cookieLoginInfo = VueCookies.get("loginInfo");
    // cookie密码为空的情况
    let cooliePassword =
      cookieLoginInfo == null ? null : cookieLoginInfo.password;
    // 如果输入的密码与cookie中存的密码一致,那么就进行加密
    if (formData.password !== cooliePassword) {
      formData.password = md5(formData.password);
    }
    // 封装一个对象用来包含输入的状态,也就是账号、密码以及复选框
    let params = {
      account: formData.account,
      password: formData.password,
      checkCode: formData.checkCode,
    };
    // console.log(params);
    // result
    let result = await proxy.Request({
      url: api.login,
      params: params,
      errorCallback: () => {
        changeCheckCode();
      },
    });
    if (!result) {
      loading.value = false;
      formData.password = "";
      return;
    }
    // 成功后自动跳转页面
    setTimeout(() => {
      router.push("/");
      loading.value = false;
    }, 1500);
    
    const loginInfo = {
      account: params.account,
      password: params.password,
      rememberMe: formData.rememberMe,
    };
    console.log(loginInfo);
    // 永不过期
    VueCookies.set("userInfo", result.data, 0);
    console.log(formData.rememberMe);
    if (formData.rememberMe == 1) {
      VueCookies.set("loginInfo", loginInfo, "7d");
    }
  });
};

以上就是Vue3 axios配置以及cookie的使用方法的详细内容,更多关于Vue3 axios配置以及cookie的使用方法的资料请关注脚本之家其它相关文章!

相关文章

  • 详解@Vue/Cli 3 Invalid Host header 错误解决办法

    详解@Vue/Cli 3 Invalid Host header 错误解决办法

    这篇文章主要介绍了详解@Vue/Cli 3 Invalid Host header 错误解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Vue.js划分组件的方法

    Vue.js划分组件的方法

    这篇文章主要介绍了Vue.js划分组件的方法,需要的朋友可以参考下
    2017-10-10
  • vue如何修改data中数据问题

    vue如何修改data中数据问题

    这篇文章主要介绍了vue如何修改data中数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue中实现checkbox回显效果

    vue中实现checkbox回显效果

    这篇文章主要介绍了vue中实现checkbox回显效果,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Vue基础语法知识梳理下篇

    Vue基础语法知识梳理下篇

    这篇文章主要介绍了Vue基础语法知识梳理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-12-12
  • 详解如何在你的Vue项目配置vux

    详解如何在你的Vue项目配置vux

    这篇文章主要介绍了详解如何在你的Vue项目配置vux,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 前端Vue中常用rules校验规则(轮子)如电话身份证邮箱等校验方法例子

    前端Vue中常用rules校验规则(轮子)如电话身份证邮箱等校验方法例子

    当我们在开发应用时经常需要对表单进行校验,以确保用户输入的数据符合预期,这篇文章主要给大家介绍了关于前端Vue中常用rules校验规则(轮子)如电话身份证邮箱等校验方法的相关资料,需要的朋友可以参考下
    2023-12-12
  • vue2.0移除或更改的一些东西(移除index key)

    vue2.0移除或更改的一些东西(移除index key)

    这篇文章主要介绍了vue2.0移除或更改的一些东西,vue2.0 移除了index和key,具体内容详情大家参考下本文
    2017-08-08
  • vue项目每30秒刷新1次接口的实现方法

    vue项目每30秒刷新1次接口的实现方法

    在vue.js项目中,经常需要对数据实时更新——每隔xx秒需要刷新一次接口——即需要用到定时器相关原理。这篇文章主要介绍了vue项目每30秒刷新1次接口的实现方法,需要的朋友可以参考下
    2018-12-12
  • vue之如何实现打印功能

    vue之如何实现打印功能

    这篇文章主要介绍了vue之如何实现打印功能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论