当前位置:首页 > VUE

vue实现长期登录

2026-03-08 21:37:50VUE

Vue 实现长期登录的方法

长期登录通常通过结合 localStoragesessionStorageCookie 存储用户凭证(如 token),并在每次请求时验证有效性来实现。以下是具体实现方案:

使用 localStorage 存储 token

用户登录成功后,将 token 存入 localStorage,并在 Vue 的全局请求拦截器中自动附加该 token

// 登录成功后存储 token
localStorage.setItem('auth_token', response.data.token);

// 在 axios 拦截器中添加 token
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('auth_token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

自动检查登录状态

在 Vue 的根实例或路由守卫中检查 localStorage 是否存在 token,决定是否跳转到登录页。

// 路由守卫示例
router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('auth_token');
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');
  } else {
    next();
  }
});

实现 token 自动续期

若后端支持 refresh_token 机制,可以在 token 过期前通过 refresh_token 获取新 token

// 响应拦截器中处理 token 过期
axios.interceptors.response.use(
  response => response,
  error => {
    const originalRequest = error.config;
    if (error.response.status === 401 && !originalRequest._retry) {
      originalRequest._retry = true;
      return axios.post('/refresh_token', { refresh_token: localStorage.getItem('refresh_token') })
        .then(res => {
          localStorage.setItem('auth_token', res.data.token);
          originalRequest.headers.Authorization = `Bearer ${res.data.token}`;
          return axios(originalRequest);
        });
    }
    return Promise.reject(error);
  }
);

安全注意事项

  • 避免将敏感信息直接存入 localStorage,可采用 HttpOnlyCookie 存储。
  • 设置 token 的合理过期时间,并定期强制重新登录。
  • 前端需配合后端实现 CSRF 防护(如 SameSite 属性)。

退出登录处理

清除存储的 token 并重置用户状态。

vue实现长期登录

// 退出登录逻辑
logout() {
  localStorage.removeItem('auth_token');
  this.$router.push('/login');
}

标签: vue
分享给朋友:

相关文章

vue实现route

vue实现route

Vue 路由实现方法 Vue 中实现路由通常使用 vue-router 库,这是 Vue 官方推荐的路由管理器。以下是具体实现步骤: 安装 vue-router 通过 npm 或 yarn 安装…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈(如是否使用 Vue Router)。 使用 Vue Router 进行编程式导航…

vue实现伸缩

vue实现伸缩

Vue实现伸缩功能的方法 使用CSS过渡和Vue的v-if或v-show 通过CSS的transition属性结合Vue的条件渲染指令(v-if或v-show)可以实现元素的伸缩效果。定义一个CSS类…