登录Vue2.0

本文代码参考链接为:https://www.cnblogs.com/zhoulifeng/p/9858605.html
视频参考链接//:https://www.bilibili.com/video/BV1gK411s7dk?from=search&seid=6866647701875999812

流程

  • 1.接受到后端的数据中,存有token
  • 2.保存token到localStorage,还有vuex中(包括token、用户名)
  • 3.设置拦截器:
    • 3.1 每次发送请求前带上token:
config.headers.Authorization = localStorage.eleToken
- 返回的请求中设置401错误处理

参考链接的代码:

import axios from 'axios'
import { Loading ,Message} from 'element-ui'  //引入了element-ui框架库
import router from './router/index.js'
let loading;
 
function startLoading() {
    loading =Loading.service({
        lock: true,
        text: '加载中...',
        background: 'rgba(0, 0, 0, 0.7)'
    });
}
 
function endLoading() {
    loading.close()
}
 
// 请求拦截
 
axios.interceptors.request.use(config => {
 
    startLoading()
    //设置请求头
    if(localStorage.eleToken) {
        config.headers.Authorization = localStorage.eleToken
    }
 
    return config
  }, error => {
    return Promise.reject(error)
  })
 
 
// 响应拦截
axios.interceptors.response.use(response => {
    endLoading()
    return response
}, error => {
    Message.error(error.response.data)
    endLoading();
 
    //获取状态码
    const {status} = error.response;
 
    if(status === 401) {
        Message.error("token失效,请重新登录");
        //清除token
        localStorage.removeItem('eleToken');
        //重新登录
        router.push('/login')
    }
 
    return Promise.reject(error)
})
 
export default axios;
  • 4.vuex存储:包括存储用户信息【user:{}】,还有是否获取到了token【isAuthorization: Boolean】
  • 5.user信息可以通过:
 const decode = jwt_decode(token)

来解析token中的user信息,再存储到vuex的user:{}中

  • 别的页面调用:
submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.$axios.post('/api/users/login',this.loginUser).then(res => {
             
            const {token} = res.data;
            //存储token
            localStorage.setItem('eleToken',token)
            //解析token
            const decode = jwt_decode(token)
            console.log(res)
             // 存储到vuex
            this.$store.dispatch("setAuthorization", !this.isEmpty(decode));
            this.$store.dispatch("setsuer",decode)
 
            // this.$router.push('/index')
          })
        }
      })
    },<br>//封装的验证方法
    isEmpty(value) {
      return (
        value === undefined ||
        value === null ||
        (typeof value === "object" && Object.keys(value).length === 0) ||
        (typeof value === "string" && value.trim().length === 0)
      );
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值