用户登陆操作

用户登陆操作

在这里插入图片描述

在这里插入图片描述

登录失败

在这里插入图片描述
向用户提示错误信息:
在这里插入图片描述

效果图:
在这里插入图片描述
注意:此种方式会导致报错固化,所以我们需要编写代码如下:
在这里插入图片描述
如此将会针对不同的错误进行不同的提示

在这里插入图片描述

登录成功

在这里插入图片描述
登录成功之后我们需要执行如下操作:

  1. 存储到vuex
  2. 存储到本地存储
  3. 成功提示
  4. 跳转到后台首页

/*
1.存储到vuex

  • store目录 —modles目录 --新建【user.js(作为用户信息的存储)
  • 在index.js中引入user.js
  • 设置user.js基础结构
  • 注意:当用户登录成功后,我们需要将用户数据data存储起来
    2.存储到本地存储
    */
    在这里插入图片描述

在这里插入图片描述

添加请求拦截器
axios.interceptors.request.use((config)=>{
       console.log(config)
       let token = window.sessionStorage.getItem("token)
       if(config.token === true){
            config.headers.token = token
       }
       console.log(config)
       //再次发送请求之前做些什么
       return config;
}, (error)=>{
       //对请求错误做些什么
       return Promise.reject(error);
});
添加响应拦截器
axios.interceptors.response.use((response)=>{
        console.log("响应拦截器  成功“)
        //对响应数据做点什么
        return  response;
},(err)=>{
        //console.log("响应拦截器 失败")
        //console. log(err)
        if(err.response.data && err.response.data.errorCode){
        //this.$message.error(err.response.data.msg);
        Vue.prototype.$message(err.response.data.msg)
        }
         //对响应错误做点什么
         return Promise.reject(err);
});
全局前置守卫

在这里插入图片描述
在这里插入图片描述

router.beforeEach((to,from,next) =>{
       //获取本地存储
       let token = window.sessionStorage.getItem("token")
       //判断token是否为真
       if(token){
                 //已登录
                 //请不要重复登录
                 if(to.path === ”/login“){
                             //返回from
                             return next({name:from.name})                                 
                      }
                      next()
         }else{
                   //未登录
                   if(to.path === "/login"){
                               return next()
                   }
                   vue.prototype.$message("请先登录")
                   next({name:"login"})
         }

})
退出登录
logout(){
          axios.post("admin/logout",{},{
          //headers:{
                       // token:this.user.token
            //}
            token:true                         
            })
            //退出登录成功
            .then(res=>{
                    console.log(res)
                    //提示用户退出登录成功
                    this.$message('退出成功')
                    //清除vuex状态数据
                    this.$store.commit("logout")
                    //返回到登陆首页
                    //this.$router.push({name:"login"})
              })
              //退出登录失败
              .catch(err =>{
                           //console.log(err)
                           if(err.response.data && err.response.data.errorCode){
                                              this.$message.error(err.response.data.msg);
                                 }
                                 //清除vuex状态数据
                                 this.$store.commit("logout")
                                 //返回到登录页
                                 this.$router.push({name:"login"})
                  })
}

有什么问题大家可以留言哦!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值