一、基础登录组件实现
- 创建登录表单组件
<template>
<el-form :model="loginForm" :rules="rules" ref="loginForm">
<el-form-item prop="username">
<el-input v-model="loginForm.username" placeholder="用户名"></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input type="password" v-model="loginForm.password" placeholder="密码"></el-input>
</el-form-item>
<el-button @click="handleLogin">登录</el-button>
</el-form>
</template>
<script>
export default {
data() {
return {
loginForm: { username: '', password: '' },
rules: {
username: [{ required: true, message: '请输入用户名' }],
password: [{ required: true, message: '请输入密码' }]
}
}
},
methods: {
async handleLogin() {
try {
const res = await this.$axios.post('/api/login', this.loginForm)
localStorage.setItem('token', res.data.token)
this.$router.push('/dashboard')
} catch (error) {
console.error('登录失败', error)
}
}
}
}
</script>
二、完整登录流程实现要点
- 路由配置
- 添加登录路由
- 配置动态路由加载逻辑
- 状态管理
- 使用Vuex存储用户信息和token
- 实现登录状态持久化
- 安全措施
- 添加验证码功能
- 实现Token自动刷新机制
- 敏感操作二次验证
三、进阶方案推荐
- 单点登录(SSO)实现
- 基于Cookie的同域方案
- 基于JWT的跨域方案
- 基于OAuth2.0/OIDC的标准方案