当前位置:首页 > VUE

vue3.0登录实现

2026-02-23 05:36:22VUE

Vue 3.0 登录功能实现

Vue 3.0 实现登录功能通常涉及前端界面、表单验证、API 调用和状态管理。以下是具体实现步骤:

环境准备 确保已安装 Vue 3.0 和必要的依赖(如 Vue Router、Axios)。可以通过以下命令创建项目:

npm init vue@latest

登录页面组件 创建 Login.vue 组件,包含表单和基础验证逻辑:

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

<script setup>
import { reactive } from 'vue';
import { useRouter } from 'vue-router';
import axios from 'axios';

const form = reactive({
  username: '',
  password: ''
});

const router = useRouter();

const handleSubmit = async () => {
  try {
    const response = await axios.post('/api/login', form);
    localStorage.setItem('token', response.data.token);
    router.push('/dashboard');
  } catch (error) {
    console.error('登录失败:', error);
  }
};
</script>

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

vue3.0登录实现

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;

状态管理(可选) 使用 Pinia 管理登录状态:

// stores/auth.js
import { defineStore } from 'pinia';

export const useAuthStore = defineStore('auth', {
  state: () => ({
    isAuthenticated: false,
    user: null
  }),
  actions: {
    login(token) {
      this.isAuthenticated = true;
      localStorage.setItem('token', token);
    },
    logout() {
      this.isAuthenticated = false;
      localStorage.removeItem('token');
    }
  }
});

表单验证增强 使用 Vuelidate 或手动验证:

vue3.0登录实现

const rules = {
  username: { required, minLength: minLength(3) },
  password: { required, minLength: minLength(6) }
};

const v$ = useVuelidate(rules, form);

拦截器配置 设置 Axios 请求拦截器处理 token:

axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

导航守卫 保护需要认证的路由:

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

安全注意事项

  • 使用 HTTPS 传输数据
  • 避免在客户端存储敏感信息
  • 实现 CSRF 保护
  • 后端应验证并过滤所有输入

以上步骤提供了 Vue 3.0 登录功能的核心实现方案,可根据实际需求扩展或调整。

分享给朋友:

相关文章

vue使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thre…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…

vue实现生成二维码

vue实现生成二维码

使用qrcode.vue库生成二维码 安装qrcode.vue库: npm install qrcode.vue --save 在Vue组件中使用: <template> <…

vue实现九宫格首页

vue实现九宫格首页

使用Vue实现九宫格首页 九宫格布局常用于移动端首页导航,以下是基于Vue的实现方法: 基础HTML结构 <template> <div class="grid-contain…

vue实现打印二维码

vue实现打印二维码

安装二维码生成库 使用 qrcode 或 vue-qrcode 库生成二维码。通过 npm 安装: npm install qrcode vue-qrcode 生成二维码 在 Vue 组…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…