当前位置:首页 > VUE

vue实现登录验证

2026-03-26 18:03:01VUE

Vue 登录验证实现方法

基础表单验证

使用 Vue 的 v-model 绑定表单数据,结合 v-ifv-show 显示验证错误信息。

<template>
  <form @submit.prevent="handleSubmit">
    <div>
      <label>用户名</label>
      <input v-model="form.username" type="text">
      <span v-if="!form.username">请输入用户名</span>
    </div>
    <div>
      <label>密码</label>
      <input v-model="form.password" type="password">
      <span v-if="!form.password">请输入密码</span>
    </div>
    <button type="submit">登录</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    handleSubmit() {
      if (!this.form.username || !this.form.password) {
        alert('请填写完整信息');
        return;
      }
      // 提交登录逻辑
    }
  }
}
</script>

使用 VeeValidate 进行高级验证

安装 VeeValidate 库提供更强大的验证功能。

npm install vee-validate
<template>
  <form @submit.prevent="handleSubmit">
    <div>
      <label>用户名</label>
      <input v-model="username" name="username" v-validate="'required|min:3'">
      <span>{{ errors.first('username') }}</span>
    </div>
    <div>
      <label>密码</label>
      <input v-model="password" name="password" type="password" v-validate="'required|min:6'">
      <span>{{ errors.first('password') }}</span>
    </div>
    <button type="submit">登录</button>
  </form>
</template>

<script>
import { ValidationProvider, extend } from 'vee-validate';
import { required, min } from 'vee-validate/dist/rules';

extend('required', {
  ...required,
  message: '该字段不能为空'
});

extend('min', {
  ...min,
  message: '长度不能小于 {length} 个字符'
});

export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    handleSubmit() {
      this.$validator.validate().then(valid => {
        if (valid) {
          // 提交登录逻辑
        }
      });
    }
  }
}
</script>

结合后端 API 验证

通过 axios 发送登录请求并处理响应。

methods: {
  async handleSubmit() {
    try {
      const response = await axios.post('/api/login', {
        username: this.username,
        password: this.password
      });

      if (response.data.success) {
        localStorage.setItem('token', response.data.token);
        this.$router.push('/dashboard');
      } else {
        alert(response.data.message);
      }
    } catch (error) {
      console.error('登录失败:', error);
      alert('登录失败,请稍后再试');
    }
  }
}

路由守卫验证

在路由配置中添加验证逻辑,保护需要登录的页面。

// router.js
router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!localStorage.getItem('token')) {
      next({
        path: '/login',
        query: { redirect: to.fullPath }
      });
    } else {
      next();
    }
  } else {
    next();
  }
});

状态管理集成

使用 Vuex 管理登录状态和用户信息。

vue实现登录验证

// store.js
export default new Vuex.Store({
  state: {
    user: null,
    isAuthenticated: false
  },
  mutations: {
    setUser(state, user) {
      state.user = user;
      state.isAuthenticated = true;
    },
    logout(state) {
      state.user = null;
      state.isAuthenticated = false;
    }
  },
  actions: {
    login({ commit }, credentials) {
      return axios.post('/api/login', credentials)
        .then(response => {
          commit('setUser', response.data.user);
          localStorage.setItem('token', response.data.token);
        });
    },
    logout({ commit }) {
      commit('logout');
      localStorage.removeItem('token');
    }
  }
});

标签: vue
分享给朋友:

相关文章

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

vue实现多选

vue实现多选

Vue 实现多选功能 在 Vue 中实现多选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定到一个数组,可以实现多选功能。适用于复选框组(…

vue实现展开

vue实现展开

展开功能的实现方法 在Vue中实现展开功能可以通过多种方式完成,常见的有使用v-show、v-if指令,结合CSS过渡动画或第三方组件库。 使用v-show控制显示隐藏 通过v-show指令可以简单…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…

vue框架实现CRM

vue框架实现CRM

Vue框架实现CRM系统 使用Vue框架构建CRM(客户关系管理)系统需要结合前端技术栈和后端API。以下为关键实现方法: 技术选型 核心框架:Vue 3(Composition API) UI组件…

vue实现选择置顶

vue实现选择置顶

Vue 实现选择置顶功能 在 Vue 中实现选择置顶功能,可以通过操作数据数组或结合 CSS 样式来实现。以下是几种常见的实现方法: 数组排序法 通过操作数据数组,将被选中的项移动到数组首位: /…