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

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使用…

vue实现ios

vue实现ios

Vue 实现 iOS 风格应用 使用 Vue 实现 iOS 风格的应用,可以通过结合 UI 框架和自定义样式来达成目标。以下是具体方法和步骤: 选择 iOS 风格的 UI 框架 Vue 生态中有多…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue 实现后退

vue 实现后退

实现后退功能的方法 在Vue中实现后退功能通常需要结合浏览器历史记录API或Vue Router的导航方法。以下是几种常见的实现方式: 使用Vue Router的go方法 this.$router…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…