太原网站制作_太原网站建设_太原做网站_秘密武器开发者中心
历史搜索

项目中前端如何处理token

游客2025-01-03 17:00:01
目录文章目录
  1. token-处理-整体分析
  2. token-处理-将 token 保存到 vuex 中
  3. token-处理-axios 请求拦截器统一注入

token-处理-整体分析

背景

在项目中,后端接口中只有登录接口是不需要token的,其他接口都需要token才能访问。

分析

登陆功能之后,从后端获取到了token值,在接下来的其他请求中,接口服务器都会去检查token值,这里我们提前把它保存到统一管理公共状态的 vuex 中:

项目中前端如何处理token 1

目标

将登陆获取到的 token 统一注入到接口的请求头中 。

思路

我们在上面的操作中已经将token保存到了 vuex 中,接下来,只需要在axios 的请求拦截器中取出token值再填充到 header 中即可。

请求拦截器代码

在文件**src/utils/request.js**中:

  • 引入store
  • 补充请求拦截器,代码逻辑是:
    • 如果当前 vuex 中有token,就在请求头中设置上。
// 不是在 vue 组件中,不能通过 this.$store.state.user....来获取 token
// 要导入
import store from '@/store'

service.interceptors.request.use(
  config => {
    const token = store.state.user.token
    // 如果当前存有 token,就加在请求头上
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    return config
  }
  , error => {
  return Promise.reject(error)
}) 

上面的authorizationbearer是本项目的后端接口要求的写法。

测试

1. 在 api/user.js 中封装一个 api 去请求用户信息

/**
 * @description: 获取用户资料
 * @param {*} 
 * @return {*}
 */
export function getUserProfile() {
  return request({
    url: '/sys/profile',
    method: 'post'
  })
}

当然这个接口是需要 token 才能访问的。

2. 在 login/index.vue 中补充按钮来测试调用它

重点检查请求头中是否携带了 token。

小结

语法:在普通.js 文件中使用 store 时,直接导入模块即可。

业务:所有的请求都会经过请求拦截器,所以方便它用来统一给请求头中添加 token。

标签:token

本文是由用户"游客"发布,所有内容的版权归原作者所有。没有经过书面许可,任何单位或个人不得以任何形式复制、转载、引用本网站的内容。否则将追究法律责任。

相关专题