当前位置:首页 > VUE

vue自动登录实现

2026-01-15 00:47:27VUE

Vue 自动登录实现方法

使用 localStorage 或 sessionStorage 存储 token

在用户登录成功后,将 token 存储在 localStorage 或 sessionStorage 中。localStorage 数据持久化,sessionStorage 在浏览器关闭后清除。

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

在应用初始化时检查是否存在 token,存在则自动登录:

created() {
  const token = localStorage.getItem('token');
  if (token) {
    this.autoLogin(token);
  }
}

使用 Vuex 管理登录状态

在 Vuex 中维护登录状态和用户信息,便于全局访问:

// store.js
state: {
  token: localStorage.getItem('token') || '',
  isAuthenticated: !!localStorage.getItem('token')
},
mutations: {
  setToken(state, token) {
    state.token = token;
    state.isAuthenticated = true;
    localStorage.setItem('token', token);
  },
  clearToken(state) {
    state.token = '';
    state.isAuthenticated = false;
    localStorage.removeItem('token');
  }
}

路由守卫实现自动登录

在路由跳转前检查登录状态,未登录但有 token 则尝试自动登录:

// router.js
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('token');
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!store.state.isAuthenticated && token) {
      store.dispatch('autoLogin', token).then(() => {
        next();
      }).catch(() => {
        next('/login');
      });
    } else if (!store.state.isAuthenticated) {
      next('/login');
    } else {
      next();
    }
  } else {
    next();
  }
});

自动登录 API 请求

实现自动登录的 API 请求方法,验证 token 有效性:

// auth.js
autoLogin(token) {
  return axios.get('/api/auto-login', {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
}

记住我功能扩展

添加记住我选项,延长 token 有效期:

vue自动登录实现

login() {
  if (this.rememberMe) {
    localStorage.setItem('token', token);
  } else {
    sessionStorage.setItem('token', token);
  }
}

安全注意事项

  • 使用 HTTPS 传输 token
  • 设置合理的 token 过期时间
  • 敏感操作需要重新验证密码
  • 考虑使用 refresh token 机制

完整示例代码

// 登录组件
methods: {
  handleLogin() {
    api.login(this.credentials).then(response => {
      const token = response.data.token;
      this.$store.commit('setToken', token);
      if (this.rememberMe) {
        localStorage.setItem('token', token);
      }
      this.$router.push('/dashboard');
    });
  }
}

标签: 自动登录vue
分享给朋友:

相关文章

实现vue组件

实现vue组件

Vue 组件的基本实现 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种方式: 单文件组件 (SFC) 使用 .vue 文件格式,…

vue广告实现

vue广告实现

Vue 广告实现方法 在 Vue 项目中实现广告功能可以通过多种方式完成,具体取决于广告类型和需求。以下是几种常见的实现方法: 使用第三方广告平台 许多广告平台如 Google AdSense、百…

vue 实现直播

vue 实现直播

Vue 实现直播的基本方法 在Vue中实现直播功能,通常需要结合WebRTC、RTMP或HLS等技术。以下是几种常见的实现方式: 使用WebRTC实现实时直播 WebRTC适合低延迟的实时直播场景,…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @tou…