当前位置:首页 > VUE

使用vue实现登录

2026-01-16 04:47:59VUE

使用 Vue 实现登录功能

创建登录表单组件

在 Vue 项目中创建一个登录表单组件,通常命名为 Login.vue。表单包含用户名和密码输入框,以及提交按钮。

<template>
  <div class="login-form">
    <h2>登录</h2>
    <form @submit.prevent="handleSubmit">
      <div class="form-group">
        <label for="username">用户名</label>
        <input
          type="text"
          id="username"
          v-model="username"
          placeholder="请输入用户名"
          required
        />
      </div>
      <div class="form-group">
        <label for="password">密码</label>
        <input
          type="password"
          id="password"
          v-model="password"
          placeholder="请输入密码"
          required
        />
      </div>
      <button type="submit" class="submit-btn">登录</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: "",
      password: "",
    };
  },
  methods: {
    handleSubmit() {
      // 登录逻辑
    },
  },
};
</script>

<style scoped>
.login-form {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}
.form-group {
  margin-bottom: 15px;
}
label {
  display: block;
  margin-bottom: 5px;
}
input {
  width: 100%;
  padding: 8px;
  box-sizing: border-box;
}
.submit-btn {
  width: 100%;
  padding: 10px;
  background-color: #42b983;
  color: white;
  border: none;
  cursor: pointer;
}
</style>

实现登录逻辑

handleSubmit 方法中,添加登录逻辑。通常需要调用后端 API 进行验证。

methods: {
  async handleSubmit() {
    try {
      const response = await axios.post("/api/login", {
        username: this.username,
        password: this.password,
      });
      if (response.data.success) {
        localStorage.setItem("token", response.data.token);
        this.$router.push("/dashboard");
      } else {
        alert("登录失败,请检查用户名或密码");
      }
    } catch (error) {
      console.error("登录错误:", error);
      alert("登录失败,请稍后重试");
    }
  },
},

添加路由配置

在 Vue 路由配置中添加登录页面的路由。

import Login from "./views/Login.vue";

const routes = [
  {
    path: "/login",
    name: "Login",
    component: Login,
  },
];

状态管理(可选)

如果需要全局管理用户登录状态,可以使用 Vuex。

// store.js
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 }, userData) {
      // 调用登录 API
      commit("setUser", userData);
    },
    logout({ commit }) {
      commit("logout");
    },
  },
});

表单验证(可选)

可以使用 Vuelidate 或手动验证表单输入。

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

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

添加加载状态

在登录过程中添加加载状态,提升用户体验。

使用vue实现登录

data() {
  return {
    username: "",
    password: "",
    isLoading: false,
  };
},
methods: {
  async handleSubmit() {
    this.isLoading = true;
    try {
      // 登录逻辑
    } finally {
      this.isLoading = false;
    }
  },
},
<button type="submit" class="submit-btn" :disabled="isLoading">
  {{ isLoading ? "登录中..." : "登录" }}
</button>

通过以上步骤,可以实现一个基本的 Vue 登录功能。根据实际需求,可以进一步扩展功能,如记住密码、第三方登录等。

标签: vue
分享给朋友:

相关文章

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-containe…

vue实现公式

vue实现公式

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

vue实现标签

vue实现标签

Vue 实现标签的方法 在 Vue 中实现标签功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 动态组件可以根据不同的条件渲染不同的标签内容。通过 :is 属性动态绑定组件名,实现标签…

vue拖拽实现

vue拖拽实现

Vue 拖拽实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop 事…

vue实现api

vue实现api

Vue 实现 API 调用 在 Vue 中调用 API 通常涉及使用 axios 或 fetch 发送 HTTP 请求,并结合 Vue 的响应式特性管理数据。以下是常见的实现方式: 安装 axios…

vue递归实现

vue递归实现

vue递归实现方法 在Vue中实现递归组件通常用于树形结构、嵌套菜单等场景。以下是具体实现方式: 使用组件name属性递归 定义一个组件时,通过name属性让组件可以在自身模板中调用自己: <…