当前位置:首页 > 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 中实现文档导入功能通常涉及文件上传、解析和处理。以下是几种常见的方法: 使用原生文件输入和 FileReader 通过 HTML 的原生 <input…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

vue页面实现

vue页面实现

Vue 页面实现方法 创建 Vue 组件 使用 Vue 单文件组件(SFC)方式创建页面,文件扩展名为 .vue。一个基本的 Vue 组件包含三个部分:模板(template)、脚本(script)和…

vue如何实现

vue如何实现

Vue 实现方法 在 Vue 中实现功能通常涉及组件化开发、状态管理和响应式数据绑定。以下是几种常见的实现方式: 组件化开发 使用 Vue 的单文件组件(.vue 文件)结构,将 UI 拆分为可复用…

vue 实现分屏

vue 实现分屏

Vue 实现分屏的方法 使用 CSS Flexbox 或 Grid 布局 通过 CSS Flexbox 或 Grid 布局可以轻松实现分屏效果。在 Vue 组件中定义两个或多个区域,并使用 CSS 控…

vue实现展开

vue实现展开

展开功能的实现方法 在Vue中实现展开功能可以通过多种方式完成,常见的有使用v-show、v-if指令,结合CSS过渡动画或第三方组件库。 使用v-show控制显示隐藏 通过v-show指令可以简单…