当前位置:首页 > 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 头部携带。

// 登录成功后
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 集中管理认证状态,包括用户信息和登录状态。

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 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使用…

vue如何实现冒泡

vue如何实现冒泡

Vue 实现冒泡排序 在 Vue 中实现冒泡排序,可以通过数据绑定和响应式特性动态展示排序过程。以下是一个完整的实现示例,包含代码和详细说明。 数据准备 在 Vue 的 data 中定义一个数组作…

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现…

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul…

vue实现用户添加功能

vue实现用户添加功能

实现用户添加功能的基本步骤 在Vue中实现用户添加功能通常涉及表单设计、数据绑定、验证和提交等环节。以下是具体实现方法: 表单设计与数据绑定 创建用户表单组件,使用v-model实现双向数据绑定:…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…