当前位置:首页 > VUE

vue 用户功能实现

2026-02-20 11:08:11VUE

用户登录功能实现

使用 Vue 和 Vuex 管理用户登录状态,结合后端 API 进行身份验证。

模板部分

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

脚本部分

<script>
import { mapActions } from 'vuex';

export default {
  data() {
    return {
      username: '',
      password: '',
      error: '',
    };
  },
  methods: {
    ...mapActions(['loginUser']),
    async login() {
      try {
        await this.loginUser({ username: this.username, password: this.password });
        this.$router.push('/dashboard');
      } catch (err) {
        this.error = '登录失败,请检查用户名或密码';
      }
    },
  },
};
</script>

用户注册功能实现

通过表单提交用户注册信息,调用后端 API 完成注册流程。

模板部分

<template>
  <div>
    <input v-model="form.username" placeholder="用户名" />
    <input v-model="form.email" placeholder="邮箱" />
    <input v-model="form.password" type="password" placeholder="密码" />
    <input v-model="form.confirmPassword" type="password" placeholder="确认密码" />
    <button @click="register">注册</button>
    <p v-if="error">{{ error }}</p>
  </div>
</template>

脚本部分

<script>
import { mapActions } from 'vuex';

export default {
  data() {
    return {
      form: {
        username: '',
        email: '',
        password: '',
        confirmPassword: '',
      },
      error: '',
    };
  },
  methods: {
    ...mapActions(['registerUser']),
    async register() {
      if (this.form.password !== this.form.confirmPassword) {
        this.error = '两次输入的密码不一致';
        return;
      }
      try {
        await this.registerUser(this.form);
        this.$router.push('/login');
      } catch (err) {
        this.error = '注册失败,请检查输入信息';
      }
    },
  },
};
</script>

用户信息管理

使用 Vuex 存储用户信息,通过 API 获取或更新用户数据。

Vuex Store 配置

const store = new Vuex.Store({
  state: {
    user: null,
  },
  mutations: {
    SET_USER(state, user) {
      state.user = user;
    },
  },
  actions: {
    async fetchUser({ commit }) {
      const response = await axios.get('/api/user');
      commit('SET_USER', response.data);
    },
    async updateUser({ commit }, userData) {
      const response = await axios.put('/api/user', userData);
      commit('SET_USER', response.data);
    },
  },
});

组件中调用用户信息

<script>
import { mapState, mapActions } from 'vuex';

export default {
  computed: {
    ...mapState(['user']),
  },
  created() {
    this.fetchUser();
  },
  methods: {
    ...mapActions(['fetchUser', 'updateUser']),
    async saveProfile() {
      await this.updateUser(this.user);
    },
  },
};
</script>

用户权限控制

通过路由守卫实现页面访问权限控制,未登录用户重定向到登录页。

路由配置

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

router.beforeEach((to, from, next) => {
  const isAuthenticated = store.state.user !== null;
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');
  } else {
    next();
  }
});

用户注销功能

清除 Vuex 中的用户状态并重定向到登录页。

注销方法实现

vue 用户功能实现

methods: {
  logout() {
    this.$store.commit('SET_USER', null);
    this.$router.push('/login');
  },
}

标签: 功能用户
分享给朋友:

相关文章

vue 实现 功能

vue 实现 功能

Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用程序。以下是一些常见的 Vue 功能实现方法: 数据绑定 Vue 的核心特性之一是数据绑定,可以通过 v-model 指令实现双向数据绑…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

uniapp实现选项卡功能

uniapp实现选项卡功能

实现选项卡功能的基本方法 在uniapp中实现选项卡功能通常需要使用uni-segmented-control组件或自定义样式结合swiper组件。以下是两种常见实现方式: 使用uni-segmen…

原生实现vue功能

原生实现vue功能

原生 JavaScript 实现 Vue 核心功能 使用原生 JavaScript 模拟 Vue 的核心功能(如数据绑定、虚拟 DOM、响应式更新等),可以通过以下方式实现: 数据响应式系统 通过…

vue实现换页功能

vue实现换页功能

Vue 实现分页功能 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 在 main.js 中引入: import Vue fr…

php购物车功能实现

php购物车功能实现

数据库设计 购物车功能通常需要设计数据库表来存储商品和用户信息。常见的表包括: products 表:存储商品信息,如商品ID、名称、价格、库存等。 users 表:存储用户信息,如用户ID、用户名…