美文网首页
vue项目中双token设计

vue项目中双token设计

作者: 一颗得道的仙丹 | 来源:发表于2023-03-29 11:18 被阅读0次

    双token概念:

    在Vue项目中,双Token设计通常是指前端使用两个Token来进行身份验证,一个是Access Token,用于访问受保护的资源;另一个是Refresh Token,用于刷新Access Token。以下是实现思路和代码示例:
    Access Token:
    Access Token是一个短期的、有限制的Token,用于访问受保护的资源。在Vue项目中,我们通常将Access Token保存在浏览器的本地存储中,例如localStorage。在每次请求受保护的资源时,前端需要将Access Token添加到请求头中,以便后端进行身份验证。以下是示例代码:

    //在请求头中添加Access Token
    axios.interceptors.request.use(config => {
      const accessToken = localStorage.getItem('accessToken')
      if (accessToken) {
        config.headers.Authorization = `Bearer ${accessToken}`
      }
      return config
    })
    

    在上述代码中,我们通过axios拦截器,在每次请求前自动添加Access Token到请求头中。如果本地存储中不存在Access Token,后端会返回401状态码,前端需要重新登录。

    Refresh Token:

    Refresh Token是一个长期的、不受限制的Token,用于刷新Access Token。在Vue项目中,我们通常将Refresh Token保存在HttpOnly的Cookie中,以增加安全性。在Access Token过期时,前端需要发送一个请求到后端,使用Refresh Token来获取新的Access Token。以下是示例代码:
    在请求头中添加Refresh Token

    axios.interceptors.request.use(config => {
      const refreshToken = Cookies.get('refreshToken')
      if (refreshToken) {
        config.headers.RefreshToken = refreshToken
      }
      return config
    })
    
    // 在响应头中获取新的Access Token并保存到本地存储中
    axios.interceptors.response.use(response => {
      const newAccessToken = response.headers.newaccesstoken
      if (newAccessToken) {
        localStorage.setItem('accessToken', newAccessToken)
      }
      return response
    })
    

    在上述代码中,我们通过axios拦截器,在每次请求前自动添加Refresh Token到请求头中。在后端返回响应时,如果存在新的Access Token,前端需要将其保存到本地存储中,以便下次访问受保护的资源时使用。
    需要注意的是,Refresh Token的安全性非常重要,如果Refresh Token泄露,攻击者可以使用它来获取新的Access Token,从而获取受保护的资源。因此,我们需要采取一些措施来保护Refresh Token的安全性,例如使用HttpOnly的Cookie、定期更换Refresh Token等。

    httponly

    HttpOnly是一种设置在Cookie中的标志,它告诉浏览器不要允许脚本访问Cookie。这样可以有效地减少跨站点脚本攻击(XSS)的风险,因为攻击者无法通过脚本获取到用户的Cookie,从而无法进行Cookie劫持等攻击。HttpOnly的Cookie只能通过HTTP协议发送给服务器,不能通过脚本或其他非HTTP协议进行访问。
    在前端代码中,无法直接设置HttpOnly标志,因为这个标志是由服务器在设置Cookie时设置的。
    示例代码如下:

        //在Node.js中,可以通过设置Cookie的httpOnly属性来设置HttpOnly标志。
        res.cookie('name', 'value', { httpOnly: true }); // 设置HttpOnly标志
    

    双token应用场景:

    双Token设计通常用于需要身份验证的Web(pc h5 app 小程序)应用程序,特别是涉及到敏感数据或操作的应用程序。例如,电子商务网站、社交媒体应用程序、在线银行应用程序等。这些应用程序通常需要用户登录后才能访问受保护的资源,因此需要使用Access Token来验证用户身份。同时,为了增加安全性,Access Token的有效期通常比较短,需要定期刷新。为了实现Access Token的刷新,我们通常使用Refresh Token,它可以在Access Token过期时用来获取新的Access Token。因此,双Token设计可以提高Web应用程序的安全性和用户体验。

    相关文章

      网友评论

          本文标题:vue项目中双token设计

          本文链接:https://www.haomeiwen.com/subject/zmrfddtx.html