当前位置:首页 > VUE

vue js实现登录

2026-02-19 15:38:19VUE

Vue.js 实现登录功能

环境准备
确保已安装 Vue.js 和必要的依赖(如 Vue Router、Axios)。通过以下命令初始化项目并安装依赖:

npm install vue-router axios

登录页面组件
创建 Login.vue 文件,包含表单和基础校验逻辑:

<template>
  <div>
    <form @submit.prevent="handleLogin">
      <input v-model="username" placeholder="用户名" required />
      <input v-model="password" type="password" placeholder="密码" required />
      <button type="submit">登录</button>
    </form>
    <p v-if="error">{{ error }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      error: ''
    };
  },
  methods: {
    async handleLogin() {
      try {
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        });
        localStorage.setItem('token', response.data.token);
        this.$router.push('/dashboard');
      } catch (err) {
        this.error = '登录失败,请检查凭证';
      }
    }
  }
};
</script>

路由配置
router/index.js 中设置登录路由和权限控制:

import { createRouter, createWebHistory } from 'vue-router';
import Login from '../views/Login.vue';
import Dashboard from '../views/Dashboard.vue';

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

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

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !localStorage.getItem('token')) {
    next('/login');
  } else {
    next();
  }
});

export default router;

API 请求封装
使用 Axios 封装全局请求,并添加 token 拦截器:

// utils/api.js
import axios from 'axios';

const api = axios.create({
  baseURL: 'http://your-api-url.com'
});

api.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

export default api;

状态管理(可选)
如需全局管理用户状态,可使用 Vuex:

// store/index.js
import { createStore } from 'vuex';

export default createStore({
  state: {
    user: null
  },
  mutations: {
    setUser(state, user) {
      state.user = user;
    }
  },
  actions: {
    async login({ commit }, credentials) {
      const response = await api.post('/login', credentials);
      commit('setUser', response.data.user);
    }
  }
});

样式与优化

vue js实现登录

  • 添加表单验证库(如 VeeValidate)增强校验。
  • 使用 CSS 或框架(如 Tailwind)美化界面。
  • 实现 token 刷新和过期处理逻辑。

标签: vuejs
分享给朋友:

相关文章

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @tou…

vue实现录像

vue实现录像

Vue 实现录像功能 在 Vue 中实现录像功能通常需要借助浏览器的 MediaDevices API 和 MediaRecorder API。以下是实现步骤: 获取用户摄像头和麦克风权限 使用 n…

vue实现组件跟随

vue实现组件跟随

实现组件跟随的常见方法 使用CSS定位 通过CSS的position: fixed或position: absolute属性实现组件跟随。需要结合JavaScript计算目标元素的位置。 <t…

vue实现产品搜索

vue实现产品搜索

实现产品搜索功能 在Vue中实现产品搜索功能需要结合前端界面和后端数据处理。以下是实现的基本思路和代码示例: 数据准备 创建一个产品数据数组,包含需要搜索的产品信息: data() { ret…

vue实现拖拽div

vue实现拖拽div

Vue 实现拖拽 Div 的方法 使用原生 HTML5 拖拽 API HTML5 提供了原生的拖拽 API,结合 Vue 的事件绑定可以快速实现拖拽功能。以下是实现步骤: <template&…

vue实现前端排序

vue实现前端排序

Vue 实现前端排序的方法 使用 Array.prototype.sort() 方法 Vue 中可以利用 JavaScript 原生的 sort() 方法对数组进行排序。在计算属性或方法中处理数据后,…