当前位置:首页 > VUE

vue 实现登录功能

2026-02-20 02:35:02VUE

创建登录页面组件

在Vue项目中创建一个Login.vue组件,包含表单元素如用户名和密码输入框、登录按钮。使用v-model双向绑定数据。

<template>
  <div class="login">
    <form @submit.prevent="handleSubmit">
      <input v-model="username" type="text" placeholder="用户名"/>
      <input v-model="password" type="password" placeholder="密码"/>
      <button type="submit">登录</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  }
}
</script>

处理表单提交

在methods中添加handleSubmit方法,验证输入并调用登录API。使用axios发送POST请求到后端接口。

methods: {
  async handleSubmit() {
    if (!this.username || !this.password) {
      alert('请输入用户名和密码')
      return
    }

    try {
      const response = await axios.post('/api/login', {
        username: this.username,
        password: this.password
      })
      // 处理登录成功逻辑
    } catch (error) {
      console.error('登录失败:', error)
    }
  }
}

存储用户认证状态

登录成功后,将返回的token存储在localStorage或Vuex中,用于后续请求的身份验证。

localStorage.setItem('token', response.data.token)
this.$store.commit('setUser', response.data.user)
this.$router.push('/dashboard')

路由配置和导航守卫

在router/index.js中配置路由,并添加全局前置守卫检查登录状态。

const routes = [
  {
    path: '/login',
    component: Login
  },
  {
    path: '/dashboard',
    component: Dashboard,
    meta: { requiresAuth: true }
  }
]

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

请求拦截器

在axios拦截器中添加token到请求头,实现自动身份验证。

axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, error => {
  return Promise.reject(error)
})

错误处理

添加响应拦截器处理401未授权错误,自动跳转到登录页面。

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

用户注销功能

实现注销功能,清除本地存储的token和用户状态。

vue 实现登录功能

methods: {
  logout() {
    localStorage.removeItem('token')
    this.$store.commit('clearUser')
    this.$router.push('/login')
  }
}

标签: 功能vue
分享给朋友:

相关文章

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue实现bootstrap

vue实现bootstrap

Vue 中集成 Bootstrap 的方法 在 Vue 项目中集成 Bootstrap 可以通过以下方式实现,涵盖样式、组件和交互功能。 安装 Bootstrap 依赖 通过 npm 或 yarn…

vue mvvm实现

vue mvvm实现

Vue MVVM 实现原理 Vue.js 是一个基于 MVVM(Model-View-ViewModel)模式的框架,其核心是通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 M…

vue实现选择

vue实现选择

Vue 实现选择功能的方法 在 Vue 中实现选择功能可以通过多种方式完成,以下介绍几种常见的实现方法。 使用 v-model 绑定单选 通过 v-model 可以轻松实现单选功能。以下是一个简单的…

vue 菜单实现

vue 菜单实现

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

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…