当前位置:首页 > VUE

vue 实现登录验证

2026-03-07 18:22:10VUE

Vue 登录验证实现方案

使用 Vue Router 进行路由守卫

router/index.js 中配置全局前置守卫,检查用户是否已登录。未登录用户访问受限路由时重定向到登录页。

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

路由配置需添加元信息标记需要验证的路由:

vue 实现登录验证

{
  path: '/dashboard',
  component: Dashboard,
  meta: { requiresAuth: true }
}

登录表单与验证逻辑

创建登录组件处理用户凭证验证:

methods: {
  handleSubmit() {
    axios.post('/api/login', {
      username: this.username,
      password: this.password
    }).then(response => {
      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    }).catch(error => {
      console.error('Login failed', error)
    })
  }
}

状态管理集成

使用 Vuex 集中管理认证状态:

vue 实现登录验证

const store = new Vuex.Store({
  state: {
    user: null,
    token: null
  },
  mutations: {
    setUser(state, { user, token }) {
      state.user = user
      state.token = token
    },
    clearAuth(state) {
      state.user = null
      state.token = null
    }
  }
})

令牌刷新机制

实现 axios 拦截器处理令牌过期情况:

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      return axios.post('/api/refresh')
        .then(res => {
          localStorage.setItem('token', res.data.token)
          error.config.headers['Authorization'] = 'Bearer ' + res.data.token
          return axios.request(error.config)
        })
    }
    return Promise.reject(error)
  }
)

安全注意事项

  • 始终使用 HTTPS 传输凭证
  • 存储令牌时优先考虑 HttpOnly cookies 而非 localStorage
  • 实现 CSRF 防护机制
  • 设置合理的令牌过期时间
  • 密码字段应使用 type="password" 自动屏蔽输入

第三方认证集成

支持 OAuth2.0 的第三方登录方案:

methods: {
  loginWithGoogle() {
    window.location.href = 'https://accounts.google.com/o/oauth2/auth?' + 
      `client_id=${CLIENT_ID}&` +
      `redirect_uri=${REDIRECT_URI}&` +
      'response_type=code&' +
      'scope=email profile'
  }
}

标签: vue
分享给朋友:

相关文章

vue实现展开与收起

vue实现展开与收起

Vue 实现展开与收起功能 在 Vue 中实现展开与收起功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-if…

vue实现方法

vue实现方法

Vue 实现方法 Vue 是一种流行的前端框架,用于构建用户界面和单页应用。以下是几种常见的 Vue 实现方法: 创建 Vue 实例 通过 new Vue() 创建一个 Vue 实例,传入配置对象,…

vue 实现评分

vue 实现评分

Vue 实现评分功能 在 Vue 中实现评分功能可以通过多种方式完成,包括使用第三方组件库或自定义实现。以下是两种常见的方法: 使用第三方组件库(如 Element UI) Element UI 提…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue实现CRUD

vue实现CRUD

Vue 实现 CRUD 操作 Vue 提供了响应式数据绑定和组件化开发能力,结合后端 API 可以轻松实现 CRUD(增删改查)功能。以下是基于 Vue 3 和 Axios 的完整实现方案。 安装依…

vue实现幻灯

vue实现幻灯

Vue实现幻灯片的基础方法 使用Vue实现幻灯片功能可以通过多种方式完成,以下是几种常见方案: 方案一:基于Vue的过渡动画 通过Vue的<transition>或<transit…