当前位置:首页 > VUE

vue登录模块实现

2026-02-17 14:09:12VUE

Vue 登录模块实现

创建登录表单组件

使用 Vue 的单文件组件结构,构建包含用户名和密码输入框的登录表单。表单需绑定 v-model 实现双向数据绑定,并添加提交事件处理。

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

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

表单验证

引入 Vuelidate 或手动验证,确保输入符合要求(如非空、长度限制等)。

vue登录模块实现

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

export default {
  validations: {
    form: {
      username: { required, minLength: minLength(3) },
      password: { required, minLength: minLength(6) },
    },
  },
  methods: {
    handleLogin() {
      this.$v.$touch();
      if (!this.$v.$invalid) {
        // 提交逻辑
      }
    },
  },
};

调用登录 API

使用 axios 发送登录请求,处理成功或失败的回调。

methods: {
  async handleLogin() {
    try {
      const response = await axios.post("/api/login", this.form);
      localStorage.setItem("token", response.data.token);
      this.$router.push("/dashboard");
    } catch (error) {
      alert("登录失败: " + error.response.data.message);
    }
  },
},

路由守卫配置

在 Vue Router 中配置全局前置守卫,限制未登录用户访问受保护路由。

vue登录模块实现

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

状态管理(可选)

使用 Vuex 集中管理用户登录状态,便于跨组件共享数据。

// store.js
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;
    },
  },
});

响应式布局与样式

添加基础样式确保表单在不同设备上显示正常。

.login-container {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}
input {
  width: 100%;
  padding: 10px;
  margin: 10px 0;
}
button {
  width: 100%;
  padding: 10px;
  background: #42b983;
  color: white;
  border: none;
}

标签: 模块vue
分享给朋友:

相关文章

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Refl…

vue实现报表

vue实现报表

vue实现报表的方法 使用Vue实现报表通常需要结合图表库或表格组件。以下是几种常见方法: 使用ECharts 安装ECharts库: npm install echarts vue-echart…

vue实现公式

vue实现公式

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

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue mvvm 实现

vue mvvm 实现

Vue MVVM 实现原理 Vue.js 的 MVVM(Model-View-ViewModel)架构通过数据绑定和响应式系统实现视图与数据的自动同步。以下是其核心实现机制: 数据劫持与响应式系统…