vue实现登录系统
Vue 登录系统实现步骤
前端部分
安装依赖 确保项目已安装 Vue 3 和必要的库(如 axios、vue-router):
npm install axios vue-router
路由配置
在 router/index.js 中配置登录路由和主页路由:
import { createRouter, createWebHistory } from 'vue-router';
import Login from '../views/Login.vue';
import Home from '../views/Home.vue';
const routes = [
{ path: '/login', component: Login },
{ path: '/', component: Home, meta: { requiresAuth: true } }
];
const router = createRouter({
history: createWebHistory(),
routes
});
登录组件
创建 Login.vue 组件,包含表单和提交逻辑:
<template>
<form @submit.prevent="handleSubmit">
<input v-model="username" placeholder="用户名" />
<input v-model="password" type="password" placeholder="密码" />
<button type="submit">登录</button>
</form>
</template>
<script setup>
import { ref } from 'vue';
import axios from 'axios';
import { useRouter } from 'vue-router';
const username = ref('');
const password = ref('');
const router = useRouter();
const handleSubmit = async () => {
try {
const response = await axios.post('/api/login', {
username: username.value,
password: password.value
});
localStorage.setItem('token', response.data.token);
router.push('/');
} catch (error) {
alert('登录失败');
}
};
</script>
路由守卫
在 router/index.js 中添加全局前置守卫:
router.beforeEach((to, from, next) => {
const isAuthenticated = localStorage.getItem('token');
if (to.meta.requiresAuth && !isAuthenticated) {
next('/login');
} else {
next();
}
});
后端部分(示例使用 Node.js + Express)
创建登录接口

const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
app.use(express.json());
const users = [{ id: 1, username: 'admin', password: '123456' }];
app.post('/api/login', (req, res) => {
const { username, password } = req.body;
const user = users.find(u => u.username === username && u.password === password);
if (user) {
const token = jwt.sign({ id: user.id }, 'your_secret_key');
res.json({ token });
} else {
res.status(401).json({ error: 'Invalid credentials' });
}
});
app.listen(3000, () => console.log('Server running'));
安全增强
HTTPS 传输 确保生产环境使用 HTTPS 协议传输敏感数据。
令牌刷新 实现刷新令牌机制,避免长期使用同一令牌。
输入验证 在前端和后端均添加表单验证逻辑,防止恶意输入。

密码加密 后端存储密码时应使用 bcrypt 等库进行哈希处理。
测试验证
前端测试 手动输入正确和错误的凭据,验证跳转逻辑和错误提示。
后端测试 使用 Postman 或 curl 测试接口返回的令牌和状态码。
集成测试 确保前端能正确处理后端返回的各种响应(如 401、500 等)。






