当前位置:首页 > VUE

vue实现登录功能

2026-01-18 11:58:40VUE

创建登录页面组件

src/views 目录下新建 Login.vue 文件,包含表单元素(用户名、密码输入框和提交按钮):

<template>
  <div class="login-container">
    <form @submit.prevent="handleLogin">
      <input v-model="username" type="text" placeholder="用户名" />
      <input v-model="password" type="password" placeholder="密码" />
      <button type="submit">登录</button>
    </form>
  </div>
</template>

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

配置路由

src/router/index.js 中添加登录页路由:

import Login from '@/views/Login.vue';

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: Login
  }
];

封装请求工具

src/utils/request.js 中配置 Axios 实例,添加请求拦截器(如 token 验证):

vue实现登录功能

import axios from 'axios';

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

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

export default instance;

状态管理(可选)

使用 Vuex 管理用户登录状态(src/store/modules/user.js):

const state = {
  token: localStorage.getItem('token') || '',
  userInfo: null
};

const mutations = {
  SET_TOKEN(state, token) {
    state.token = token;
    localStorage.setItem('token', token);
  },
  CLEAR_TOKEN(state) {
    state.token = '';
    localStorage.removeItem('token');
  }
};

export default {
  namespaced: true,
  state,
  mutations
};

添加路由守卫

src/router/index.js 中配置全局前置守卫,限制未登录访问:

vue实现登录功能

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token');
  if (to.name !== 'Login' && !isAuthenticated) {
    next({ name: 'Login' });
  } else {
    next();
  }
});

后端接口示例(Node.js)

提供简单的登录接口实现:

app.post('/api/login', (req, res) => {
  const { username, password } = req.body;
  if (username === 'admin' && password === '123456') {
    res.json({ token: 'generated-jwt-token' });
  } else {
    res.status(401).json({ error: '认证失败' });
  }
});

样式优化

添加基础样式(Login.vue<style> 部分):

.login-container {
  max-width: 300px;
  margin: 0 auto;
  padding: 20px;
}
input, button {
  width: 100%;
  margin: 10px 0;
  padding: 8px;
}

标签: 功能vue
分享给朋友:

相关文章

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue实现兼容

vue实现兼容

Vue 兼容性实现方案 Vue.js 的兼容性主要涉及对不同浏览器、Vue 版本以及第三方库的支持。以下是常见的兼容性解决方案: 浏览器兼容性 使用 Babel 转换 ES6+ 代码为 ES5 语…

vue实现座位

vue实现座位

Vue实现座位布局 使用Vue实现座位布局可以通过组件化和响应式数据管理来简化开发流程。以下是一个完整的实现方案: 数据准备 定义座位数据结构,通常使用二维数组表示行列关系: data() {…

vue列表查询实现

vue列表查询实现

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

vue实现登录拦截

vue实现登录拦截

实现登录拦截的方法 在Vue项目中,可以通过路由守卫(Navigation Guards)实现登录拦截,确保未登录用户无法访问受保护的路由。以下是具体实现方式: 使用全局前置守卫 在路由配置文件中(…

vue实现border样式

vue实现border样式

实现边框样式的方法 在Vue中实现边框样式可以通过多种方式完成,包括内联样式、CSS类绑定、动态样式绑定等。以下是几种常见的方法: 内联样式绑定 通过style属性直接绑定样式对象,适用于简单的边…