当前位置:首页 > VUE

vue js实现登录

2026-01-18 23:15:13VUE

Vue.js 登录功能实现

依赖安装 确保项目已安装 Vue.js 和必要的依赖库(如 Vue Router、Axios)。通过以下命令安装:

npm install vue-router axios

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

import { createRouter, createWebHistory } from 'vue-router';
import Login from '../views/Login.vue';

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

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;

登录页面组件 创建 Login.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="errorMessage" class="error">{{ errorMessage }}</p>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      username: '',
      password: '',
      errorMessage: ''
    };
  },
  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 (error) {
        this.errorMessage = '登录失败,请检查凭证';
      }
    }
  }
};
</script>

<style scoped>
.login-container {
  max-width: 300px;
  margin: 0 auto;
}
.error {
  color: red;
}
</style>

API 请求处理 后端需提供 /api/login 接口接收 POST 请求。示例使用 Axios 发送请求,需根据实际 API 调整 URL 和参数。

vue js实现登录

状态管理(可选) 对于复杂应用,可使用 Vuex 或 Pinia 管理登录状态:

// Pinia 示例 (stores/auth.js)
import { defineStore } from 'pinia';

export const useAuthStore = defineStore('auth', {
  state: () => ({
    isAuthenticated: false,
    user: null
  }),
  actions: {
    login(credentials) {
      return axios.post('/api/login', credentials)
        .then(response => {
          this.isAuthenticated = true;
          this.user = response.data.user;
          localStorage.setItem('token', response.data.token);
        });
    }
  }
});

路由守卫router/index.js 中添加全局前置守卫,限制未登录访问:

vue js实现登录

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token');
  if (to.name !== 'Login' && !isAuthenticated) {
    next({ name: 'Login' });
  } else {
    next();
  }
});

表单验证增强 可引入 Vuelidate 或自定义验证逻辑:

// 示例:简单验证
methods: {
  validateForm() {
    return this.username.length > 3 && this.password.length > 6;
  },
  handleLogin() {
    if (!this.validateForm()) {
      this.errorMessage = '用户名或密码不符合要求';
      return;
    }
    // 继续登录逻辑
  }
}

响应式设计 通过 CSS 媒体查询优化移动端显示:

@media (max-width: 600px) {
  .login-container {
    padding: 20px;
  }
}

安全注意事项

  • 使用 HTTPS 传输数据
  • 后端应对密码进行哈希处理
  • 考虑实现 CSRF 保护
  • 敏感操作需二次验证

标签: vuejs
分享给朋友:

相关文章

vue响应式实现

vue响应式实现

Vue 响应式实现原理 Vue 的响应式系统基于 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)实现,通过数据劫持和依赖收集实现数据变化时的自动更新。…

vue实现文章锚点定位

vue实现文章锚点定位

实现文章锚点定位的方法 在Vue中实现文章锚点定位可以通过多种方式完成,以下是几种常见的方法: 使用原生HTML锚点 通过HTML的id属性和<a>标签的href属性实现锚点跳转。在Vu…

vue实现流程

vue实现流程

Vue 实现流程的基本步骤 安装 Vue.js 可以通过 CDN 引入或使用 npm/yarn 安装。 CDN 方式: <script src="https://cdn.jsdelivr.…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{ 'b…

vue 实现弹幕

vue 实现弹幕

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

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…