Vue3双token加密登录及注册方式

 更新时间:2025年03月05日 08:55:42   作者:酒江  
本文介绍了双Token机制在Vue3应用中的实现,包括登录/注册、请求拦截、响应拦截、Token存储、退出登录等流程,重点是Token的刷新逻辑和安全性

一、核心思路

双 Token 机制

  • Access Token:短期有效,用于请求 API。
  • Refresh Token:长期有效,用于刷新 Access Token。

认证流程

  • 用户登录或注册成功后,后端返回 access_tokenrefresh_token
  • 前端将 Token 安全存储(如 localStoragecookie)。
  • 每次请求 API 时,在请求头中携带 access_token
  • access_token 过期时,使用 refresh_token 获取新的 access_token
  • 如果 refresh_token 也过期,则强制用户重新登录。

二、实现步骤

登录/注册

  • 用户提交表单后,调用后端接口获取 access_tokenrefresh_token
  • 将 Token 存储到 localStoragecookie 中。

请求拦截

  • 使用 Axios 拦截器,在每次请求时自动添加 access_token 到请求头。

响应拦截

  • 拦截 401 错误(Token 过期),尝试使用 refresh_token 刷新 access_token
  • 如果刷新成功,更新 access_token 并重试请求。
  • 如果刷新失败,清除 Token 并跳转到登录页。

安全存储

  • 使用 localStoragecookie 存储 Token,确保数据安全。
  • 可以考虑对 Token 进行加密存储。

退出登录

  • 清除存储的 Token,并跳转到登录页。

三、关键点

Token 刷新逻辑

  • 使用 refresh_token 调用后端接口获取新的 access_token
  • 避免重复刷新(通过 _retry 标志位)。

安全性

  • 使用 HTTPS 加密传输。
  • 避免将 Token 暴露在前端代码中。

用户体验

  • 在 Token 过期时自动刷新,减少用户重新登录的频率。

Vue 3 双 Token 加密登录和注册的基本逻辑流程如下:

注册

  • 用户提交注册信息(如用户名、密码)。
  • 后端验证用户信息合法性(如密码强度、用户名唯一性)。
  • 后端生成一个加密的 Token(比如 JWT),并返回给前端。
  • 前端保存 Token,通常会将其存储在 localStoragesessionStorage

登录

  • 用户提交登录信息(如用户名、密码)。
  • 后端验证用户凭证是否合法。
  • 如果验证成功,后端返回两个 Token:一个用于身份验证的 access_token,另一个用于刷新身份的 refresh_token
  • 前端保存 access_tokenrefresh_token

access_token 用于 API 请求时携带。

refresh_token 用于刷新过期的 access_token

请求保护接口

  • 前端每次发起需要认证的请求时,携带 access_token(通常放在 HTTP 请求头中)。
  • 后端验证 access_token,如果有效则返回数据;如果无效,后端通过 refresh_token 获取新的 access_token

刷新 Token

  • access_token 过期时,前端使用 refresh_token 通过接口请求获取新的 access_token
  • 后端验证 refresh_token 是否有效,如果有效则返回新的 access_token

四、总结

通过双 Token 机制,可以有效提升应用的安全性,同时保证用户体验。

核心在于:

  • Token 的获取与存储
  • 请求与响应拦截器的实现
  • Token 刷新逻辑的处理

这种机制适用于需要高安全性的应用场景,如金融、电商等。

前端通过双 Token(access_tokenrefresh_token)机制处理身份验证和授权,access_token 用于访问保护接口,refresh_token 用于在 access_token 过期时刷新认证。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue 项目全屏插件screenfull使用案例

    vue 项目全屏插件screenfull使用案例

    这篇文章主要介绍了vue 项目全屏插件screenfull使用案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • vue+js实现视频淡入淡出效果

    vue+js实现视频淡入淡出效果

    这篇文章主要为大家详细介绍了vue+js实现视频的淡入淡出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Vue export default中的name属性有哪些作用

    Vue export default中的name属性有哪些作用

    这篇文章主要介绍了Vue export default中的name属性有哪些作用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue+element-ui集成随机验证码+用户名+密码的form表单验证功能

    vue+element-ui集成随机验证码+用户名+密码的form表单验证功能

    在登入页面,我们往往需要通过输入验证码才能进行登入,那我们下面就详讲一下在vue项目中如何配合element-ui实现这个功能,需要的朋友可以参考下
    2018-08-08
  • Vue.js数字输入框组件使用方法详解

    Vue.js数字输入框组件使用方法详解

    这篇文章主要为大家详细介绍了Vue.js数字输入框组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Vue3 Element Plus表单自定义校验的实现全过程

    Vue3 Element Plus表单自定义校验的实现全过程

    这篇文章主要介绍了Vue3 Element Plus表单自定义校验的实现全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 详解Vue ElementUI手动上传excel文件到服务器

    详解Vue ElementUI手动上传excel文件到服务器

    这篇文章主要介绍了详解Vue ElementUI手动上传excel文件到服务器,对ElementUI感兴趣的同学,可以参考下
    2021-05-05
  • vue+rem自定义轮播图效果

    vue+rem自定义轮播图效果

    这篇文章主要为大家详细介绍了vue+rem自定义轮播图效果,手指触摸左滑和右滑,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 老生常谈vue2中watch的使用

    老生常谈vue2中watch的使用

    watch的基本用法是在Vue实例中定义一个watch对象,该对象内部包含需要监听的数据项和对应的回调函数,这篇文章主要介绍了vue2中watch的使用,需要的朋友可以参考下
    2024-01-01
  • Vue设置长时间未操作登录自动到期返回登录页

    Vue设置长时间未操作登录自动到期返回登录页

    这篇文章主要介绍了Vue设置长时间未操作登录以后自动到期返回登录页,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2020-01-01

最新评论