当前位置:首页 > VUE

vue实现密码登录

2026-01-11 23:07:44VUE

Vue 实现密码登录功能

基础模板结构

使用 Vue 的模板语法构建登录表单,包含用户名、密码输入框和提交按钮:

<template>
  <div class="login-container">
    <form @submit.prevent="handleSubmit">
      <div class="form-group">
        <label for="username">用户名</label>
        <input
          type="text"
          id="username"
          v-model="form.username"
          required
        />
      </div>
      <div class="form-group">
        <label for="password">密码</label>
        <input
          type="password"
          id="password"
          v-model="form.password"
          required
        />
      </div>
      <button type="submit">登录</button>
    </form>
  </div>
</template>

数据绑定与验证

在 Vue 的 datasetup 中定义表单数据模型,并添加基础验证逻辑:

vue实现密码登录

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      },
      error: null
    }
  },
  methods: {
    validateForm() {
      if (!this.form.username.trim()) {
        this.error = '请输入用户名'
        return false
      }
      if (this.form.password.length < 6) {
        this.error = '密码长度不能少于6位'
        return false
      }
      this.error = null
      return true
    }
  }
}
</script>

提交逻辑处理

实现表单提交方法,包含网络请求和结果处理:

methods: {
  async handleSubmit() {
    if (!this.validateForm()) return

    try {
      const response = await axios.post('/api/login', {
        username: this.form.username,
        password: this.form.password
      })
      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      this.error = error.response?.data?.message || '登录失败'
    }
  }
}

密码显示切换功能

添加密码可见性切换功能提升用户体验:

vue实现密码登录

<div class="form-group">
  <label for="password">密码</label>
  <div class="password-input">
    <input
      :type="showPassword ? 'text' : 'password'"
      id="password"
      v-model="form.password"
      required
    />
    <button
      type="button"
      @click="showPassword = !showPassword"
    >
      {{ showPassword ? '隐藏' : '显示' }}
    </button>
  </div>
</div>

样式优化

添加基础样式提升视觉效果:

<style scoped>
.login-container {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}
.form-group {
  margin-bottom: 15px;
}
input {
  width: 100%;
  padding: 8px;
}
button[type="submit"] {
  background: #42b983;
  color: white;
  padding: 10px 15px;
  border: none;
}
.password-input {
  display: flex;
}
.error {
  color: red;
}
</style>

安全增强措施

实施额外的安全措施保护用户数据:

  1. 使用 HTTPS 协议传输数据
  2. 对密码进行前端加密处理(如 bcryptjs)
  3. 添加 CSRF 防护
  4. 实现请求限流防止暴力破解
import bcrypt from 'bcryptjs'

methods: {
  async handleSubmit() {
    const salt = bcrypt.genSaltSync(10)
    const hashedPassword = bcrypt.hashSync(this.form.password, salt)

    await axios.post('/api/login', {
      username: this.form.username,
      password: hashedPassword
    })
  }
}

标签: 密码vue
分享给朋友:

相关文章

vue实现表格

vue实现表格

Vue 实现表格的方法 在 Vue 中实现表格可以通过多种方式完成,以下是几种常见的方法: 使用原生 HTML 表格 Vue 可以直接渲染原生 HTML 表格,通过 v-for 动态生成表格行和列。…

vue实现预览

vue实现预览

Vue实现文件预览的方法 使用Vue实现文件预览功能可以通过多种方式完成,具体取决于文件类型(图片、PDF、视频等)。以下是几种常见文件类型的实现方案。 图片预览 通过<input type…

vue实现多层评论回复

vue实现多层评论回复

Vue 实现多层评论回复 数据结构设计 多层评论通常采用嵌套结构,每个评论对象包含子评论数组。示例数据结构如下: comments: [ { id: 1, content: '父…

vue怎么实现选中删除

vue怎么实现选中删除

实现选中删除功能的方法 在Vue中实现选中删除功能通常涉及以下几个关键步骤: 数据绑定与选中状态管理 使用v-model或v-for指令绑定列表数据,结合复选框或单选按钮实现选中状态管理。例如:…

vue实现点击页面切换

vue实现点击页面切换

实现点击页面切换功能 在Vue中实现点击页面切换功能,可以通过路由跳转或组件动态渲染两种方式完成。以下是具体实现方法: 使用Vue Router实现页面跳转 安装Vue Router后,在项目中…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…