当前位置:首页 > VUE

使用vue实现登录功能

2026-02-23 16:25:09VUE

创建Vue项目

使用Vue CLI初始化项目:

vue create vue-login-demo

选择默认配置或手动配置(如Router、Vuex等)。

安装依赖

如需使用Axios发送请求:

npm install axios

设计登录表单组件

src/components/Login.vue中创建表单:

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

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      error: ''
    };
  },
  methods: {
    async handleSubmit() {
      try {
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        });
        localStorage.setItem('token', response.data.token);
        this.$router.push('/dashboard');
      } catch (err) {
        this.error = '登录失败,请检查用户名或密码';
      }
    }
  }
};
</script>

<style scoped>
.error { color: red; }
</style>

配置路由

src/router/index.js中设置登录页路由:

使用vue实现登录功能

import Vue from 'vue';
import Router from 'vue-router';
import Login from '../components/Login.vue';

Vue.use(Router);

export default new Router({
  routes: [
    { path: '/login', component: Login },
    { path: '/dashboard', component: () => import('../components/Dashboard.vue'), meta: { requiresAuth: true } }
  ]
});

添加路由守卫

src/router/index.js中补充全局前置守卫:

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

后端接口示例(可选)

使用Node.js模拟登录接口:

const express = require('express');
const app = express();
app.use(express.json());

app.post('/api/login', (req, res) => {
  if (req.body.username === 'admin' && req.body.password === '123456') {
    res.json({ token: 'fake-jwt-token' });
  } else {
    res.status(401).send('认证失败');
  }
});

app.listen(3000, () => console.log('Server running on port 3000'));

集成Axios

src/main.js中配置Axios全局实例:

使用vue实现登录功能

import axios from 'axios';
axios.defaults.baseURL = 'http://localhost:3000';
Vue.prototype.$axios = axios;

状态管理(可选)

如需使用Vuex管理登录状态:

// src/store/index.js
export default new Vuex.Store({
  state: {
    isAuthenticated: false,
    user: null
  },
  mutations: {
    loginSuccess(state, user) {
      state.isAuthenticated = true;
      state.user = user;
    },
    logout(state) {
      state.isAuthenticated = false;
      state.user = null;
    }
  }
});

表单验证增强

使用Vuelidate进行客户端验证:

npm install vuelidate

在组件中引入:

import { required, minLength } from 'vuelidate/lib/validators';

export default {
  data() { /* ... */ },
  validations: {
    username: { required },
    password: { required, minLength: minLength(6) }
  },
  methods: {
    handleSubmit() {
      this.$v.$touch();
      if (this.$v.$invalid) return;
      // 提交逻辑
    }
  }
};

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

相关文章

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue实现机制

vue实现机制

Vue 实现机制的核心原理 Vue.js 的核心实现机制主要基于响应式系统、虚拟 DOM 和组件化设计。以下是关键实现细节: 响应式系统 Vue 通过 Object.defineProperty(V…

甘特图vue实现

甘特图vue实现

甘特图 Vue 实现方法 使用开源库 vue-ganttastic 安装依赖: npm install vue-ganttastic 基础实现代码: <template> <…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…

vue实现数据

vue实现数据

Vue 实现数据绑定的方法 Vue.js 提供了多种方式实现数据绑定,包括双向绑定、单向绑定以及动态数据绑定。以下是几种常见的实现方式: 双向数据绑定(v-model) 双向数据绑定通常用于表单元素…