当前位置:首页 > VUE

vue实现本地登陆

2026-02-24 22:16:04VUE

Vue 实现本地登录功能

准备工作

确保已安装 Vue.js 和 Vue Router。若未安装,可通过以下命令安装:

npm install vue vue-router

创建登录页面组件

src/views/Login.vue 中创建登录表单:

vue实现本地登陆

<template>
  <div class="login">
    <h1>登录</h1>
    <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" class="error">{{ error }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: '',
      error: ''
    };
  },
  methods: {
    handleLogin() {
      if (this.username === 'admin' && this.password === '123456') {
        localStorage.setItem('isAuthenticated', 'true');
        this.$router.push('/dashboard');
      } else {
        this.error = '用户名或密码错误';
      }
    }
  }
};
</script>

配置路由

src/router/index.js 中设置路由守卫和登录路由:

vue实现本地登陆

import Vue from 'vue';
import Router from 'vue-router';
import Login from '@/views/Login.vue';
import Dashboard from '@/views/Dashboard.vue';

Vue.use(Router);

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

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

export default router;

创建受保护页面

src/views/Dashboard.vue 中创建需登录才能访问的页面:

<template>
  <div>
    <h1>欢迎进入仪表盘</h1>
    <button @click="handleLogout">退出登录</button>
  </div>
</template>

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

样式优化

添加基础样式到 src/App.vue 或单独样式文件:

.login {
  max-width: 300px;
  margin: 0 auto;
  padding: 20px;
}
.error {
  color: red;
}

测试流程

  1. 访问 /login 页面,输入正确的用户名 (admin) 和密码 (123456) 应跳转到仪表盘。
  2. 直接访问 /dashboard 会重定向到登录页面。
  3. 点击退出按钮会清除登录状态并返回登录页。

扩展建议

  • 使用 Vuex 集中管理登录状态
  • 添加表单验证库如 VeeValidate
  • 实现 JWT 或 OAuth 等更安全的认证方式
  • 对密码进行加密存储

标签: vue
分享给朋友:

相关文章

vue交互实现

vue交互实现

Vue 交互实现方法 Vue.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现视频

vue实现视频

Vue 实现视频播放的方法 在 Vue 项目中实现视频播放可以通过多种方式完成,以下是几种常见的方法: 使用 HTML5 的 <video> 标签 在 Vue 组件中直接使用 HTML…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…

vue 实现文字滚动

vue 实现文字滚动

Vue 实现文字滚动效果 使用CSS动画实现 通过CSS的@keyframes和transform属性实现文字滚动效果: <template> <div class="scro…

vue实现拦截登录

vue实现拦截登录

Vue 实现登录拦截的方法 使用路由守卫进行拦截 Vue Router 提供了全局前置守卫 beforeEach,可以在路由跳转前进行验证。在路由配置文件中添加以下代码: import router…