当前位置:首页 > VUE

vue实现登录

2026-02-25 13:53:31VUE

Vue 实现登录功能

创建登录表单组件

在 Vue 项目中创建一个登录表单组件,包含用户名和密码输入框以及登录按钮。使用 v-model 绑定表单数据。

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

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

<style scoped>
.login-form {
  max-width: 300px;
  margin: 0 auto;
}
.form-group {
  margin-bottom: 15px;
}
.login-btn {
  width: 100%;
  padding: 8px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 4px;
}
</style>

实现登录逻辑

handleLogin 方法中,调用后端 API 发送登录请求。可以使用 axios 或其他 HTTP 客户端库。

vue实现登录

methods: {
  async handleLogin() {
    try {
      const response = await axios.post("/api/login", this.loginForm);
      const { token, user } = response.data;

      // 存储 token 和用户信息
      localStorage.setItem("token", token);
      this.$store.commit("setUser", user);

      // 跳转到首页或其他页面
      this.$router.push("/");
    } catch (error) {
      console.error("登录失败:", error);
      alert("登录失败,请检查用户名和密码");
    }
  },
},

使用 Vuex 管理用户状态

在 Vuex store 中定义用户状态和 mutations,用于全局管理用户登录状态。

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

路由守卫验证登录状态

在 Vue Router 中使用导航守卫,验证用户是否已登录,未登录则重定向到登录页面。

vue实现登录

// router/index.js
import Vue from "vue";
import Router from "vue-router";
import store from "../store";

Vue.use(Router);

const router = new Router({
  routes: [
    {
      path: "/login",
      component: () => import("../views/Login.vue"),
    },
    {
      path: "/",
      component: () => import("../views/Home.vue"),
      meta: { requiresAuth: true },
    },
  ],
});

router.beforeEach((to, from, next) => {
  if (to.matched.some((record) => record.meta.requiresAuth)) {
    if (!store.state.isAuthenticated) {
      next("/login");
    } else {
      next();
    }
  } else {
    next();
  }
});

export default router;

处理退出登录

在需要退出登录的地方调用 Vuex 的 logout mutation,并清除本地存储的 token。

methods: {
  logout() {
    this.$store.commit("logout");
    localStorage.removeItem("token");
    this.$router.push("/login");
  },
},

集成第三方登录(可选)

如果需要集成第三方登录(如 Google、GitHub),可以使用相应的 SDK 或 OAuth 库。

methods: {
  handleGoogleLogin() {
    // 使用 Google SDK 或 OAuth 流程
    // 获取 token 后调用后端 API 验证
  },
},

通过以上步骤,可以在 Vue 项目中实现完整的登录功能,包括表单验证、状态管理、路由守卫等。

标签: vue
分享给朋友:

相关文章

vue前端分页怎么实现

vue前端分页怎么实现

前端分页实现方法 在Vue中实现前端分页通常涉及数据分割和页面控制逻辑。以下是常见的实现方式: 使用计算属性分页 通过计算属性对数据进行切片处理: computed: { paginatedD…

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

通过vue实现

通过vue实现

Vue 实现方法 安装 Vue 确保已安装 Node.js 和 npm,通过以下命令安装 Vue CLI: npm install -g @vue/cli 创建 Vue 项目 使用 Vue CLI…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <templ…

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…