1.用vue+elementUi做一个简易登录页面,要有必填等验证,通过后跳转到home页面。 2.登录时,将用户姓名等信息放到vuex的状态中。 3.加一个全局路由守卫,如果没有在vuex中获取到用户名,则强制跳转回到登录页面。
时间: 2024-04-10 11:33:41 浏览: 20
你可以按照以下步骤来实现你的需求:
1. 创建一个Vue项目,并安装Element UI库:
```bash
vue create my-project
cd my-project
vue add element
```
2. 在项目的路由文件(src/router/index.js)中配置路由:
```javascript
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import Login from '../views/Login.vue'
import store from '../store'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Home',
component: Home,
meta: { requiresAuth: true }
},
{
path: '/login',
name: 'Login',
component: Login
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
// 全局路由守卫
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !store.state.user.username) {
next('/login')
} else {
next()
}
})
export default router
```
3. 在登录页面组件(src/views/Login.vue)中实现登录逻辑,并将用户信息存入Vuex中:
```vue
<template>
<div>
<el-form :model="form" ref="form" :rules="rules" label-width="80px">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input type="password" v-model="form.password"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="login">登录</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
return {
form: {
username: '',
password: ''
},
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' }
]
}
}
},
methods: {
login() {
this.$refs.form.validate(valid => {
if (valid) {
// 模拟登录成功
const user = {
username: this.form.username,
// 其他用户信息...
}
this.$store.commit('SET_USER', user)
this.$router.push('/')
}
})
}
}
}
</script>
```
4. 在Vuex的状态管理文件(src/store/index.js)中定义用户信息的状态和mutation:
```javascript
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
user: {}
},
mutations: {
SET_USER(state, user) {
state.user = user
}
},
actions: {},
modules: {}
})
```
这样,当用户在登录页面输入用户名和密码并点击登录按钮后,会将用户信息存入Vuex中,并跳转到Home页面。如果用户没有在Vuex中获取到用户名,在访问需要登录的页面时,会被强制跳转回登录页面。
以上是一个简单的登录页面的实现示例,你可以根据实际需求进行修改和扩展。