当前位置:首页 > VUE

vue登录实现

2026-03-27 19:11:28VUE

Vue 登录功能实现

登录页面组件

创建一个 Login.vue 组件,包含表单和提交逻辑:

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

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    async handleLogin() {
      try {
        const response = await this.$axios.post('/api/login', {
          username: this.username,
          password: this.password
        })
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        console.error('登录失败:', error)
      }
    }
  }
}
</script>

路由配置

在路由文件中设置登录路由和受保护路由:

import Vue from 'vue'
import Router from 'vue-router'
import Login from './views/Login.vue'
import Dashboard from './views/Dashboard.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    {
      path: '/login',
      name: 'login',
      component: Login
    },
    {
      path: '/dashboard',
      name: 'dashboard',
      component: Dashboard,
      meta: { requiresAuth: true }
    }
  ]
})

路由守卫

添加全局前置守卫检查用户是否已登录:

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

状态管理(可选)

使用 Vuex 管理用户登录状态:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    user: null,
    isAuthenticated: false
  },
  mutations: {
    setUser(state, user) {
      state.user = user
      state.isAuthenticated = true
    },
    logout(state) {
      state.user = null
      state.isAuthenticated = false
    }
  },
  actions: {
    login({ commit }, credentials) {
      return axios.post('/api/login', credentials)
        .then(response => {
          commit('setUser', response.data.user)
          localStorage.setItem('token', response.data.token)
        })
    },
    logout({ commit }) {
      localStorage.removeItem('token')
      commit('logout')
    }
  }
})

登录表单验证

添加表单验证功能:

methods: {
  validateForm() {
    if (!this.username) {
      this.error = '请输入用户名'
      return false
    }
    if (!this.password) {
      this.error = '请输入密码'
      return false
    }
    return true
  },
  async handleLogin() {
    if (!this.validateForm()) return

    // 登录逻辑...
  }
}

错误处理

完善错误处理机制:

async handleLogin() {
  try {
    const response = await this.$axios.post('/api/login', {
      username: this.username,
      password: this.password
    })

    if (response.data.success) {
      localStorage.setItem('token', response.data.token)
      this.$store.commit('setUser', response.data.user)
      this.$router.push('/dashboard')
    } else {
      this.error = response.data.message || '登录失败'
    }
  } catch (error) {
    this.error = error.response?.data?.message || '服务器错误'
  }
}

登录状态持久化

在应用初始化时检查登录状态:

new Vue({
  created() {
    const token = localStorage.getItem('token')
    if (token) {
      this.$store.dispatch('checkAuth', token)
    }
  }
})

登出功能

实现登出功能:

vue登录实现

methods: {
  logout() {
    this.$store.dispatch('logout')
    this.$router.push('/login')
  }
}

以上实现涵盖了 Vue 登录功能的主要方面,包括表单处理、路由保护、状态管理和错误处理。根据具体需求可以进一步调整和扩展。

标签: vue
分享给朋友:

相关文章

vue element实现

vue element实现

Vue Element UI 实现 Vue Element UI 是基于 Vue.js 的组件库,提供丰富的 UI 组件,适合快速开发企业级中后台产品。以下是一些关键实现方法和步骤: 安装 Vue…

vue实现公式

vue实现公式

在Vue中实现公式展示或计算可以通过多种方式实现,以下为具体方法: 使用模板插值与计算属性 若公式较简单,可直接在模板中使用插值表达式或计算属性。例如计算圆的面积: <templat…

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue动画实现

vue动画实现

Vue动画实现方法 Vue提供了多种方式实现动画效果,主要通过内置组件和第三方库完成。 使用<transition>组件 Vue内置的<transition>组件可以为元素添…

前端vue实现概率

前端vue实现概率

Vue实现概率功能的方法 在Vue中实现概率功能通常涉及随机数生成和概率计算。以下是几种常见实现方式: 基础概率实现 使用Math.random()生成0到1之间的随机数,与设定概率比较: con…