vue实现登录页
Vue 实现登录页
项目初始化
使用 Vue CLI 创建新项目:
vue create login-page
选择默认配置或手动配置(推荐包含 Vue Router 和 Vuex)。
基础结构
在 src/views 目录下创建 Login.vue:
<template>
<div class="login-container">
<h1>用户登录</h1>
<form @submit.prevent="handleSubmit">
<div class="form-group">
<label>用户名</label>
<input v-model="username" type="text" required>
</div>
<div class="form-group">
<label>密码</label>
<input v-model="password" type="password" required>
</div>
<button type="submit">登录</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
username: '',
password: ''
}
},
methods: {
handleSubmit() {
// 登录逻辑
}
}
}
</script>
<style scoped>
.login-container {
max-width: 400px;
margin: 0 auto;
padding: 20px;
}
.form-group {
margin-bottom: 15px;
}
</style>
路由配置
修改 src/router/index.js:
import Vue from 'vue'
import Router from 'vue-router'
import Login from '../views/Login.vue'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/login',
name: 'Login',
component: Login
}
]
})
表单验证
安装 VeeValidate:
npm install vee-validate
在 main.js 中引入:
import { ValidationProvider, extend } from 'vee-validate'
import { required, email } from 'vee-validate/dist/rules'
extend('required', required)
extend('email', email)
Vue.component('ValidationProvider', ValidationProvider)
更新登录表单:
<ValidationProvider rules="required|email" v-slot="{ errors }">
<input v-model="username" type="text">
<span>{{ errors[0] }}</span>
</ValidationProvider>
状态管理
在 Vuex 中存储用户状态:
// store/index.js
export default new Vuex.Store({
state: {
user: null
},
mutations: {
setUser(state, user) {
state.user = user
}
}
})
登录逻辑
methods: {
async handleSubmit() {
try {
const response = await axios.post('/api/login', {
username: this.username,
password: this.password
})
this.$store.commit('setUser', response.data.user)
this.$router.push('/dashboard')
} catch (error) {
alert('登录失败')
}
}
}
安全增强
添加 CSRF 防护:
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'
响应式设计
使用媒体查询优化移动端显示:
@media (max-width: 600px) {
.login-container {
padding: 10px;
}
}
完整功能实现
- 添加记住密码功能
- 实现密码显示/隐藏切换
- 添加第三方登录(如 Google、GitHub)
- 实现验证码功能
- 添加登录加载状态
部署注意事项
- 确保使用 HTTPS
- 设置合理的 Cookie 安全策略
- 实现密码加密传输
- 添加登录失败次数限制







