当前位置:首页 > 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 实现单页面应用(SPA) Vue.js 是一个渐进式框架,非常适合构建单页面应用(SPA)。SPA 的核心特点是整个应用只有一个 HTML 页面,通过动态加载内容实现页面切换,无需重新加载整个…

vue实现vnc

vue实现vnc

Vue 实现 VNC 客户端 在 Vue 项目中实现 VNC 客户端功能,可以通过集成现有的 VNC 客户端库或组件完成。以下是具体实现方法: 安装依赖库 使用 noVNC 或其他 VNC 客户端…

vue实现注册

vue实现注册

Vue 实现注册功能 注册功能通常涉及前端表单、数据验证、与后端 API 的交互等步骤。以下是一个完整的 Vue 实现注册功能的方案。 创建注册表单 使用 Vue 的模板语法创建注册表单,包含用户名…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…

mui实现vue

mui实现vue

mui 实现 Vue 的步骤 mui 是一个轻量级的前端框架,常用于移动端开发。结合 Vue 可以实现高效的开发体验。以下是具体实现方法。 安装 mui 和 Vue 通过 npm 或 yarn 安装…

vue实现treetable

vue实现treetable

Vue实现TreeTable的方法 使用第三方组件库(如Element UI) Element UI的el-table组件支持树形表格展示,通过设置row-key和tree-props属性即可实现。…