0
点赞
收藏
分享

微信扫一扫

登录/退出流程

Sophia的玲珑阁 2021-09-19 阅读 173
vue

1.封装axios

main.js

import axios from 'axios'

//创建axios实例
const instance = axios.create({
    baseURL:   'ur',
    timeout: 1000,
})

// 请求拦截
instance.interceptors.request.use(function (config) {
  // 在请求之前做的事
  return config
}, function (err) {
  // 在请求错误后做的事
  return Promise.reject(err)
});

// 响应拦截
let myInterceptors = instance.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
}, function (err) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(err);
})

// 移除拦截器
instance.interceptors.response.eject(myInterceptors)

// 判断请求方式
export function request (type, url, params) {
  if (type == 'get') {
    return get(url, params)
  } else if (type == 'post') {
    return post(url, params)
  } else if (type == 'put') {
    return put(url, params)
  }
}

// get请求
function get(url, params) {
  return instance.get(url,params)
}
// post请求
function post(url, params) {
  return instance.post(url,params)
}
// put请求
function put(url, params) {
  return instance.put(url,params)
}

2.将登录成功之后的token,保存到客户端的sessionStorage中

原因:为了保证项目中除了登录之外的其他API接口,比须在登录之后才能访问,而且该token只能在当前网站打开期间生效,所以要将token保存在sessionStorage中

login.vue

 mounted() {
 function login(params) {
  return request(
    'post',
    // 拼接url(这个看后端传参需求决定是否要拼接)
    `/rqcode/query?uid=${params.uid}`,
    {id: 2, 
     uid:22}.then(res => {
        console.log(res);
        // 判断登录
        if(res.status !== 200) {
          return this.$message.error('登录失败');
        }
          this.$message.success('登录成功');
          // 生成token
          window.sessionStorage.setItem("token",res.data.token)
          // 路由跳转
          this.$router.push('/home')
    })
  },
  )
};
}

3.挂载路由导航守卫,保证只在必须登陆后才能访问其他页面

router.js

/ 挂载路由导航守卫(写在路由里面)
router.beforeEach((to, from, next) => {
  //判断是否在登录页面
  if (to.path === "/login") return next()
  // 获取token
  tokenStr = window.sessionStorage.getItem('token')
  //判断是否携带token
  if(!tokenStr) return next('/login')
})

这篇文章是我在学习前端过程中所总结的登录流程,如有不对的地方,望各位大佬能给出指导意见。

举报

相关推荐

0 条评论