vue登录页面实现
实现Vue登录页面的基本步骤
创建Login.vue文件作为登录组件,包含表单元素(用户名/密码输入框、提交按钮)。使用v-model双向绑定数据,通过@submit.prevent阻止默认表单提交行为。
<template>
<div class="login-container">
<form @submit.prevent="handleLogin">
<input v-model="form.username" placeholder="用户名"/>
<input v-model="form.password" type="password" placeholder="密码"/>
<button type="submit">登录</button>
</form>
</div>
</template>
数据绑定与验证
在<script>部分设置响应式数据对象和验证逻辑。使用Vue的ref或reactive创建响应式表单对象,可结合vee-validate或自定义验证规则。
<script setup>
import { reactive } from 'vue'
const form = reactive({
username: '',
password: ''
})
const validate = () => {
return form.username.length > 0 && form.password.length >= 6
}
</script>
提交逻辑与API交互
实现handleLogin方法,通过axios或fetch发送登录请求。处理成功/失败场景,保存token至localStorage或Vuex/Pinia store。

const handleLogin = async () => {
if (!validate()) return alert('验证失败')
try {
const res = await axios.post('/api/login', form)
localStorage.setItem('token', res.data.token)
router.push('/dashboard')
} catch (err) {
console.error('登录失败:', err)
}
}
路由配置与导航守卫
在router/index.js中配置登录路由,添加导航守卫实现未登录重定向。
const routes = [
{ path: '/login', component: Login },
{ path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
]
router.beforeEach((to) => {
if (to.meta.requiresAuth && !localStorage.getItem('token')) {
return '/login'
}
})
样式优化与用户体验
添加CSS样式增强视觉效果,包括输入框焦点状态、错误提示、加载状态等。使用v-if或v-show控制加载动画显示。

.login-container {
max-width: 400px;
margin: 0 auto;
}
input:focus {
border-color: #42b983;
}
.error-message {
color: red;
}
安全增强措施
实现CSRF防护(如添加token到请求头)、密码输入错误次数限制、验证码功能等安全措施。生产环境应启用HTTPS并设置HttpOnly的cookie。
axios.interceptors.request.use(config => {
config.headers['X-CSRF-TOKEN'] = getCSRFToken()
return config
})
第三方登录集成
支持OAuth2.0协议集成第三方登录(如Google/GitHub)。创建社交登录按钮,跳转至授权页面后处理回调。
<button @click="socialLogin('google')">Google登录</button>
以上实现可根据具体项目需求调整扩展,建议使用Vue 3的Composition API组织代码结构。






