当前位置:首页 > VUE

vue实现用户鉴权

2026-01-12 06:42:20VUE

Vue 用户鉴权实现方案

前端路由守卫

在 Vue Router 中配置全局前置守卫,检查用户是否登录。未登录用户访问受限路由时重定向到登录页。

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token')
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

JWT 认证流程

前端在用户登录成功后存储 JWT token,后续请求通过 HTTP 头部携带。

vue实现用户鉴权

// 登录成功后
localStorage.setItem('token', response.data.token)
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`

// 请求拦截器
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

权限控制组件

创建高阶组件或指令控制界面元素显示,基于用户角色进行渲染判断。

Vue.directive('permission', {
  inserted(el, binding) {
    const userRoles = store.getters.roles
    if (!binding.value.some(role => userRoles.includes(role))) {
      el.parentNode.removeChild(el)
    }
  }
})

状态管理集成

使用 Vuex 集中管理认证状态,包括用户信息和登录状态。

vue实现用户鉴权

const store = new Vuex.Store({
  state: {
    user: null,
    isAuthenticated: false
  },
  mutations: {
    SET_USER(state, user) {
      state.user = user
      state.isAuthenticated = !!user
    }
  }
})

安全注意事项

定期刷新 token 避免长期有效,敏感操作需二次验证。退出登录时清除客户端存储。

// 退出处理
localStorage.removeItem('token')
delete axios.defaults.headers.common['Authorization']
router.push('/login')

服务端配合

确保后端接口对每个请求进行权限校验,返回 401 状态码时前端应跳转登录页。

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      store.commit('LOGOUT')
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

标签: 用户vue
分享给朋友:

相关文章

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…

vue实现指引

vue实现指引

Vue 实现指引功能 Vue 中实现指引功能可以通过多种方式完成,常见的有使用第三方库或自定义实现。以下是几种常见方法: 使用第三方库(如 driver.js) 安装 driver.js: np…

vue实现选择框

vue实现选择框

Vue 实现选择框的方法 Vue 中可以通过多种方式实现选择框(下拉框),包括原生 HTML 的 <select> 元素结合 Vue 的数据绑定,或者使用第三方 UI 库如 Element…

vue 实现多选框

vue 实现多选框

Vue 实现多选框的方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选框的选择功能。每个复选框的 value 属性会被添加到数组中,取消勾选时则从数…

laravel vue实现登录

laravel vue实现登录

Laravel 和 Vue.js 实现登录功能 后端配置(Laravel) 安装 Laravel Sanctum 用于 API 认证 composer require laravel/sanctu…