当前位置:首页 > VUE

vue实现登录页面

2026-02-20 10:42:21VUE

Vue 登录页面实现步骤

创建Vue项目

使用Vue CLI或Vite初始化项目:

npm init vue@latest vue-login-demo
cd vue-login-demo
npm install

安装必要依赖

如需要表单验证或UI组件库:

npm install axios vue-router pinia
npm install element-plus  # 示例使用Element UI

登录页面组件

src/views/LoginView.vue中创建基础登录表单:

<template>
  <div class="login-container">
    <el-form :model="form" :rules="rules" ref="loginForm">
      <el-form-item prop="username">
        <el-input v-model="form.username" placeholder="用户名"/>
      </el-form-item>
      <el-form-item prop="password">
        <el-input v-model="form.password" type="password" placeholder="密码"/>
      </el-form-item>
      <el-button type="primary" @click="handleLogin">登录</el-button>
    </el-form>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'

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

const rules = {
  username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
  password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
}

const router = useRouter()
const handleLogin = async () => {
  try {
    // 替换为实际API调用
    // const res = await axios.post('/api/login', form.value)
    ElMessage.success('登录成功')
    router.push('/dashboard')
  } catch (error) {
    ElMessage.error(error.message)
  }
}
</script>

<style scoped>
.login-container {
  width: 100%;
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}
</style>

配置路由

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

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

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

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

export default router

状态管理(可选)

使用Pinia存储登录状态:

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

export const useAuthStore = defineStore('auth', {
  state: () => ({
    token: localStorage.getItem('token') || null
  }),
  actions: {
    setToken(token) {
      this.token = token
      localStorage.setItem('token', token)
    }
  }
})

表单验证增强

可引入VeeValidate进行复杂验证:

npm install @vee-validate/rules @vee-validate/yup

示例验证规则:

import { useField, useForm } from 'vee-validate'
import * as yup from 'yup'

const { handleSubmit } = useForm({
  validationSchema: yup.object({
    username: yup.string().required().min(3),
    password: yup.string().required().min(6)
  })
})

安全注意事项

  1. 密码传输需使用HTTPS
  2. 服务端应实现CSRF防护
  3. 敏感数据避免存储在localStorage
  4. 实现自动退出机制

扩展功能

  • 添加验证码组件
  • 第三方登录(OAuth2.0)
  • 密码强度检测
  • 记住密码功能(需加密存储)

通过以上步骤可构建基础登录功能,实际项目需根据业务需求调整接口调用和错误处理逻辑。

vue实现登录页面

标签: 页面vue
分享给朋友:

相关文章

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-to…

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化…

vue实现链接

vue实现链接

Vue 实现链接的方法 在 Vue 中实现链接可以通过多种方式,包括使用 <router-link>、<a> 标签或编程式导航。以下是几种常见的方法: 使用 <rou…

vue实现发帖

vue实现发帖

使用 Vue 实现发帖功能 前端实现 创建发帖表单组件,包含标题和内容输入框,以及提交按钮。使用 v-model 绑定表单数据。 <template> <div>…