当前位置:首页 > 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实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue实现答题

vue实现答题

Vue 实现答题功能 数据结构设计 使用 Vue 的响应式特性管理题目和答案数据。通常需要以下数据结构: data() { return { questions: [ {…

vue简单实现

vue简单实现

Vue 简单实现示例 以下是一个使用 Vue.js 创建简单应用的示例,涵盖基本功能如数据绑定、事件处理和组件化。 基础 HTML 结构 <!DOCTYPE html> <html…

vue实现tooltips

vue实现tooltips

Vue 实现 Tooltips 的方法 使用原生 HTML title 属性 在 Vue 模板中直接使用 HTML 原生 title 属性实现简单的提示效果。这种方式无需额外依赖,但功能较为基础,无法…

vue实现快递查询

vue实现快递查询

实现思路 通过调用第三方快递查询API接口,结合Vue.js框架实现快递单号查询功能。需要用户输入快递单号和选择快递公司,点击查询后显示物流信息。 准备工作 注册快递查询API服务(如快递1…

vue实现自动搜索

vue实现自动搜索

实现自动搜索功能 在Vue中实现自动搜索功能通常需要结合输入框的监听事件和防抖技术,避免频繁触发搜索请求。以下是一个完整的实现方案: 使用v-model和watch监听输入变化 通过v-model绑…