当前位置:首页 > VUE

使用vue实现登录

2026-03-08 18:10:51VUE

使用 Vue 实现登录功能

创建 Vue 项目

通过 Vue CLI 创建一个新项目:

vue create login-demo
cd login-demo

安装必要的依赖(如 Axios 用于 HTTP 请求):

npm install axios

设计登录表单

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

使用vue实现登录

<template>
  <div class="login-container">
    <form @submit.prevent="handleLogin">
      <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 handleLogin() {
      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>
.login-container {
  max-width: 300px;
  margin: 0 auto;
}
.error {
  color: red;
}
</style>

配置路由

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

import Vue from "vue";
import Router from "vue-router";
import Login from "@/components/Login.vue";
import Dashboard from "@/components/Dashboard.vue";

Vue.use(Router);

export default new Router({
  routes: [
    { path: "/login", component: Login },
    { path: "/dashboard", component: Dashboard, meta: { requiresAuth: true } },
  ],
});

添加路由守卫

src/main.js 或路由配置中添加全局前置守卫,检查用户是否已登录:

使用vue实现登录

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

对接后端 API

使用 Axios 发送登录请求,示例后端接口为 /api/login

import axios from "axios";

axios.post("/api/login", {
  username: "user",
  password: "pass",
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

处理登录状态

登录成功后存储 token 并跳转页面:

localStorage.setItem("token", response.data.token);
this.$router.push("/dashboard");

注销功能

在需要注销的地方清除 token 并重定向到登录页:

localStorage.removeItem("token");
this.$router.push("/login");

注意事项

  • 使用 HTTPS 保护用户凭证。
  • 后端应对密码进行哈希处理,避免明文存储。
  • 前端可通过 Vuex 集中管理登录状态(可选)。
  • 表单需添加输入验证(如长度、格式检查)。

标签: vue
分享给朋友:

相关文章

vue循环数组实现

vue循环数组实现

vue循环数组的实现方法 在Vue中循环数组主要通过v-for指令实现,以下是几种常见用法: 基本数组循环 使用v-for指令遍历数组,可以通过(item, index)的语法获取当前项和索引值:…

vue实现管道

vue实现管道

Vue 中实现管道(Pipe)功能 在 Vue 中可以通过过滤器(Filters)或计算属性(Computed Properties)实现类似管道的功能,将数据经过多个处理步骤后输出。 使用过滤器(…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue实现拍照

vue实现拍照

Vue实现拍照功能 在Vue中实现拍照功能通常需要结合浏览器的MediaDevices API和Canvas元素。以下是具体实现方法: 安装依赖(可选) 如果需要更简单的封装,可以安装vue-web…

vue实现波形

vue实现波形

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

vue实现必填

vue实现必填

Vue 实现表单必填验证的方法 在Vue中实现表单必填验证可以通过多种方式完成,以下是几种常见的方法: 使用HTML5原生属性 最简单的必填验证可以通过HTML5的required属性实现: &l…