当前位置:首页 > VUE

vue实现简单登录

2026-02-19 01:17:56VUE

Vue 实现简单登录功能

创建登录表单组件

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

<template>
  <div class="login-form">
    <h3>用户登录</h3>
    <input type="text" v-model="username" placeholder="用户名" />
    <input type="password" v-model="password" placeholder="密码" />
    <button @click="handleLogin">登录</button>
    <p v-if="error" class="error">{{ error }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      error: ''
    }
  }
}
</script>

实现登录逻辑

handleLogin 方法中添加验证逻辑,可以模拟 API 调用或直接验证预设的用户名密码。

<script>
export default {
  methods: {
    handleLogin() {
      if (!this.username || !this.password) {
        this.error = '用户名和密码不能为空'
        return
      }

      // 模拟API验证
      if (this.username === 'admin' && this.password === '123456') {
        localStorage.setItem('isAuthenticated', 'true')
        this.$router.push('/dashboard')
      } else {
        this.error = '用户名或密码错误'
      }
    }
  }
}
</script>

添加路由配置

在路由文件中配置登录页面的路由,并设置路由守卫进行访问控制。

// router/index.js
import Vue from 'vue'
import Router from 'vue-router'
import Login from '../views/Login.vue'
import Dashboard from '../views/Dashboard.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    {
      path: '/login',
      name: 'Login',
      component: Login
    },
    {
      path: '/dashboard',
      name: 'Dashboard',
      component: Dashboard,
      meta: { requiresAuth: true }
    }
  ]
})

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

export default router

添加样式

为登录表单添加基本样式,使其更美观。

<style scoped>
.login-form {
  max-width: 300px;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 4px;
}

input {
  width: 100%;
  padding: 10px;
  margin: 10px 0;
  border: 1px solid #ddd;
  border-radius: 4px;
}

button {
  width: 100%;
  padding: 10px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

.error {
  color: red;
  margin-top: 10px;
}
</style>

实现登出功能

在需要的地方添加登出按钮,清除认证状态并重定向到登录页面。

vue实现简单登录

<template>
  <div>
    <h1>欢迎来到仪表盘</h1>
    <button @click="handleLogout">登出</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleLogout() {
      localStorage.removeItem('isAuthenticated')
      this.$router.push('/login')
    }
  }
}
</script>

这个实现包含了基本的登录功能,包括表单验证、路由守卫和状态管理。可以根据实际需求扩展更多功能,如记住密码、密码重置等。

标签: 简单vue
分享给朋友:

相关文章

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现 单选

vue实现 单选

实现 Vue 单选功能 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 可以轻松实现单选功能,将单选按钮的值绑定到同…

vue列表查询实现

vue列表查询实现

实现 Vue 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

vue实现数据渲染

vue实现数据渲染

Vue 数据渲染的实现方式 Vue.js 提供了多种数据渲染的方式,包括插值表达式、指令和计算属性等。以下是常见的实现方法: 插值表达式 使用双大括号 {{ }} 将数据绑定到模板中,数据变化时会自…

vue视频怎么实现

vue视频怎么实现

实现视频播放功能 在Vue中实现视频播放功能可以通过HTML5的<video>标签或第三方库来实现。以下是几种常见的方法: 使用HTML5 <video>标签 <te…