当前位置:首页 > 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架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue的实现

vue的实现

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

vue实现订单

vue实现订单

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

vue实现picker

vue实现picker

Vue 实现 Picker 组件的方法 在 Vue 中实现 Picker 组件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 HTML 和 CSS 实现 通过 Vue 的模板和样式绑定,…

vue实现横滚

vue实现横滚

Vue 实现横滚效果 横滚效果通常指水平滚动内容,常见于轮播图、横向导航栏等场景。以下是几种实现方式: 使用 CSS 和 Vue 结合 通过 CSS 的 overflow-x 和 white-spa…

vue怎么实现onclick

vue怎么实现onclick

在Vue中实现点击事件(类似原生onclick)可以通过多种方式完成,以下是常见方法: 使用 v-on 指令 Vue提供了v-on指令绑定DOM事件,简写为@。例如绑定点击事件: <butt…