当前位置:首页 > VUE

vue实现登录状态

2026-03-09 23:09:07VUE

Vue 实现登录状态管理

使用 Vuex 进行状态管理

Vuex 是 Vue 的官方状态管理库,适合管理全局的登录状态。在 Vuex 中定义一个 user 模块,存储用户信息和登录状态。

// store/modules/user.js
const state = {
  isLoggedIn: false,
  user: null
}

const mutations = {
  SET_LOGIN(state, user) {
    state.isLoggedIn = true
    state.user = user
  },
  SET_LOGOUT(state) {
    state.isLoggedIn = false
    state.user = null
  }
}

const actions = {
  login({ commit }, userData) {
    // 调用登录 API
    return api.login(userData).then(response => {
      commit('SET_LOGIN', response.data.user)
      localStorage.setItem('token', response.data.token)
    })
  },
  logout({ commit }) {
    commit('SET_LOGOUT')
    localStorage.removeItem('token')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

路由守卫控制访问权限

在 Vue Router 中配置全局前置守卫,检查用户登录状态,未登录用户跳转到登录页。

// router/index.js
router.beforeEach((to, from, next) => {
  const isAuthenticated = store.state.user.isLoggedIn
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

持久化登录状态

使用 localStoragesessionStorage 存储 token,页面刷新时从存储中恢复登录状态。

// main.js 或 App.vue
const token = localStorage.getItem('token')
if (token) {
  api.validateToken(token).then(response => {
    store.commit('user/SET_LOGIN', response.data.user)
  }).catch(() => {
    localStorage.removeItem('token')
  })
}

使用计算属性获取登录状态

在组件中通过计算属性获取登录状态,方便模板中使用。

computed: {
  isLoggedIn() {
    return this.$store.state.user.isLoggedIn
  },
  currentUser() {
    return this.$store.state.user.user
  }
}

封装登录状态检查工具函数

创建可复用的工具函数检查登录状态,减少代码重复。

vue实现登录状态

// utils/auth.js
export function checkAuth() {
  return store.state.user.isLoggedIn
}

export function requireAuth(to, from, next) {
  if (!checkAuth()) {
    next('/login')
  } else {
    next()
  }
}

标签: 状态vue
分享给朋友:

相关文章

vue实现放大效果

vue实现放大效果

使用 CSS transform 实现放大效果 在 Vue 中实现放大效果可以通过 CSS 的 transform: scale() 属性。这种方法简单高效,适合大多数交互场景。 定义一个 CSS…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Refl…

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单文…

vue 实现 confirm

vue 实现 confirm

实现确认对话框的方法 在Vue中实现确认对话框可以通过多种方式完成,包括使用内置组件、第三方库或自定义组件。 使用浏览器原生confirm 最简单的实现方式是直接调用浏览器原生的confirm方法。…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind(或简写为 :)动态绑定图片的…

vue远离实现

vue远离实现

Vue 原理实现 Vue.js 的核心原理包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现原理的详细解析。 响应式系统 Vue 的响应式系统基于 Object.definePro…