返回顶部
首页 > 资讯 > 前端开发 > JavaScript >web项目开发中2个Token原因解析及示例代码
  • 189
分享到

web项目开发中2个Token原因解析及示例代码

2024-04-02 19:04:59 189人浏览 薄情痞子
摘要

目录 问题: 项目中2个Token, 一个时效2个小时(简称:短Token), 另一个时效14天(简称:长Token), 为什么要用2个Token? 解答: 1.基于安全性,

在这里插入图片描述

问题:

项目中2个Token, 一个时效2个小时(简称:短Token), 另一个时效14天(简称:长Token),
为什么要用2个Token?

解答:

1.基于安全性, 防止Token泄露的考虑, 服务器资源中所有的请求都只能使用短Token, 并且短Token只有2小时时效;

  •  这个方法依然无法完全解决防止Token泄露的问题, 只是在一定程度上提高防止Token泄露的安全性;
  • 长Token的作用只有一个, 就是短Token时效了的时候, 用长Token去请求获取新的短Token,

只有这个接口中, 才能用长Token发请求.

2.为了提高用户的体验, 不至于直接让用户退出正在操作的页面


import Vue from 'vue'
import axiOS from 'axios'
import VueAxios from 'vue-axios'
import { getToken, setToken } from './token'
import router from '../router/index.js'
import { Toast } from 'vant'
Vue.use(VueAxios, axios)
const instance = axios.create({
  baseURL: '基地址',
  timeout: 100000
})
// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 统一添加token
    getToken() && (config.headers['Authorization']= `Bearer ${getToken().token}`)
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)
// 添加响应拦截器

instance.interceptors.response.use(
  function (response) {
    return response
  },
  async function (error) {
    if (401 === error.response.status) {
      setTimeout('console.clear()', 2000)
      if (getToken()) {
        try {
          // 登录了, 但是短T过期, 用长T获取短T(刷新用户token)
          let res = await axios({
            url: '基地址/v1_0/authorizations',
            method: 'PUT',
            headers:{Authorization : `Bearer ${getToken().refresh_token}`}
          })
          // 更新短T
          let token = getToken()
          token.token = res.data.data.token
          setToken(token)
          // 继续用户操作
          return instance(error.config)
        } catch (error) {
          // 长T失效,跳转登录页
          Toast.fail('请先登录')
          router.push({ path: '/login' })
        }
      } else {
        // 未登录,跳转登录页
        Toast.fail('请先登录')
        router.push({ path: '/login' })
      }
    }
    return Promise.reject(error)
  }
)
export default instance

以上就是WEB项目开发中2个Token原因解析及示例代码的详细内容,更多关于web项目开发的资料请关注编程网其它相关文章!

--结束END--

本文标题: web项目开发中2个Token原因解析及示例代码

本文链接: https://lsjlt.com/news/136621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • web项目开发中2个Token原因解析及示例代码
    目录 问题: 项目中2个Token, 一个时效2个小时(简称:短Token), 另一个时效14天(简称:长Token), 为什么要用2个Token? 解答: 1.基于安全性,...
    99+
    2024-04-02
  • web开发中css样式代码的示例分析
    小编给大家分享一下web开发中css样式代码的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.文本设置  1...
    99+
    2024-04-02
  • web项目开发之JS函数防抖与节流示例代码
    目录防抖引入防抖场景1(鼠标移入)防抖场景2(键盘按键)函数节流防抖 经典应用常见: 手风琴效果 引入 没有做防抖的网站: 做了防抖的网站:   防抖场景1(鼠标移入) ...
    99+
    2024-04-02
  • web开发中让DIV一直固定在屏幕的某个位置示例代码该怎么写
    web开发中让DIV一直固定在屏幕的某个位置示例代码该怎么写,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 代...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作