当前位置:首页 > VUE

vue实现登录退出

2026-02-10 18:52:38VUE

Vue 实现登录和退出功能

依赖安装
确保项目中已安装 Vue 和 Vue Router。若未安装,可通过以下命令安装:

npm install vue vue-router

路由配置
router/index.js 中配置登录和主页的路由,并设置路由守卫:

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

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

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

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

export default router;

登录组件
Login.vue 中实现登录逻辑,提交表单后存储 token 并跳转:

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

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    };
  },
  methods: {
    handleLogin() {
      // 模拟登录成功
      localStorage.setItem('token', 'fake-token');
      this.$router.push('/');
    }
  }
};
</script>

主页组件
Home.vue 中实现退出逻辑,清除 token 并返回登录页:

<template>
  <div>
    <h1>欢迎</h1>
    <button @click="handleLogout">退出</button>
  </div>
</template>

<script>
export default {
  methods: {
    handleLogout() {
      localStorage.removeItem('token');
      this.$router.push('/login');
    }
  }
};
</script>

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

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

export default createStore({
  state: {
    isAuthenticated: !!localStorage.getItem('token')
  },
  mutations: {
    setAuth(state, status) {
      state.isAuthenticated = status;
    }
  }
});

集成到组件
在登录和退出方法中调用 Vuex:

// Login.vue
methods: {
  handleLogin() {
    localStorage.setItem('token', 'fake-token');
    this.$store.commit('setAuth', true);
    this.$router.push('/');
  }
}

// Home.vue
methods: {
  handleLogout() {
    localStorage.removeItem('token');
    this.$store.commit('setAuth', false);
    this.$router.push('/login');
  }
}

注意事项

vue实现登录退出

  • 实际项目中需替换模拟 token 为真实认证接口返回的数据。
  • 敏感信息建议结合 HTTPS 和 HttpOnly Cookie 增强安全性。
  • 路由守卫可根据业务需求扩展更多逻辑,如权限校验。

标签: vue
分享给朋友:

相关文章

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…

vue实现autocomplete

vue实现autocomplete

Vue 实现 Autocomplete 功能 Vue 中实现 Autocomplete(自动完成)功能可以通过自定义组件或使用现有库完成。以下是几种常见方法: 方法一:使用 Vue 原生实现 创建…

vue实现triger

vue实现triger

在Vue中实现触发器(trigger)功能通常涉及自定义事件或DOM事件触发。以下是几种常见场景的实现方法: 自定义事件触发 通过$emit方法触发父组件中监听的自定义事件: // 子组件 thi…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…