用vue2写前端界面,有两个路由,一个主页面,一个登录页面,给定一个对象isLogin默认为false,当打开页面时时未登录状态所以跳转到登录界面,点击登录之后,isLogin变为true,然后跳转到主页面,并且保持登录状态,直到点击退出按钮登录状态为false。
时间: 2024-06-06 09:06:24 浏览: 41
好的,这是一个关于Vue2的前端开发问题。具体实现可以使用Vue Router来配置路由,在路由拦截器中判断isLogin是否为true,如果为false则跳转到登录页面,否则跳转到主页面。登录成功后,将isLogin设置为true并存储在localStorage中或者使用cookie保存登录状态,退出登录时将isLogin设置为false并从localStorage或cookie中删除登录状态即可。
相关问题
用vue2写一个完整的登录页面 路由中并验证token过期没过期 需不需要重新登陆
为了完成这个任务,你需要掌握Vue.js的基本知识,了解Vue Router和Axios的基本用法,并且需要对Token的概念有一定的理解。
首先,我们需要创建一个Vue项目并安装Vue Router和Axios:
```
vue create my-login-page
cd my-login-page
npm install vue-router axios
```
接下来,我们需要创建一个登录页面组件。在src目录下创建一个Login.vue文件,代码如下:
```
<template>
<div>
<form>
<input type="text" placeholder="用户名" v-model="username">
<input type="password" placeholder="密码" v-model="password">
<button type="submit" @click.prevent="login">登录</button>
</form>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
username: '',
password: ''
};
},
methods: {
login() {
axios.post('/api/login', {
username: this.username,
password: this.password
}).then(response => {
localStorage.setItem('token', response.data.token);
this.$router.push('/dashboard');
}).catch(error => {
console.error(error);
});
}
}
}
</script>
```
上面的代码中,我们创建了一个表单,用户可以输入用户名和密码进行登录。当用户点击登录按钮后,我们使用Axios发送一个POST请求到后端API,传递用户名和密码,并且在成功登录后将返回的Token保存到localStorage中。最后,我们使用Vue Router将用户重定向到仪表盘页面。
接下来,我们需要创建一个仪表盘页面组件。在src目录下创建一个Dashboard.vue文件,代码如下:
```
<template>
<div>
<h1>欢迎来到仪表盘页面!</h1>
<button @click="logout">退出登录</button>
</div>
</template>
<script>
import axios from 'axios';
export default {
methods: {
logout() {
localStorage.removeItem('token');
this.$router.push('/login');
}
},
created() {
axios.get('/api/dashboard', {
headers: {
Authorization: `Bearer ${localStorage.getItem('token')}`
}
}).then(response => {
console.log(response);
}).catch(error => {
console.error(error);
localStorage.removeItem('token');
this.$router.push('/login');
});
}
}
</script>
```
上面的代码中,我们创建了一个欢迎消息和一个退出登录按钮。当用户点击退出登录按钮后,我们会从localStorage中移除Token并且重定向到登录页面。在组件创建时,我们使用Axios发送一个GET请求到后端API,并且在请求头中加入Token。如果Token验证通过,我们将在控制台输出响应内容;否则,我们将从localStorage中移除Token并且重定向到登录页面。
接下来,我们需要配置Vue Router和路由守卫。在src目录下创建一个router.js文件,代码如下:
```
import Vue from 'vue';
import VueRouter from 'vue-router';
import Login from './Login.vue';
import Dashboard from './Dashboard.vue';
Vue.use(VueRouter);
const router = new VueRouter({
routes: [
{
path: '/login',
component: Login
},
{
path: '/dashboard',
component: Dashboard,
meta: {
requiresAuth: true
}
}
]
});
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !localStorage.getItem('token')) {
next('/login');
} else {
next();
}
});
export default router;
```
上面的代码中,我们创建了两个路由,分别对应登录页面和仪表盘页面。在仪表盘页面路由中,我们使用meta字段标记该页面需要Token验证。然后,我们使用路由守卫,在每次路由跳转前检查localStorage中是否存在Token。如果存在Token,我们继续跳转;否则,我们重定向到登录页面。
最后,我们需要在main.js中挂载Vue Router并且启动我们的应用。代码如下:
```
import Vue from 'vue';
import App from './App.vue';
import router from './router';
Vue.config.productionTip = false;
new Vue({
router,
render: h => h(App)
}).$mount('#app');
```
现在,我们已经完成了一个基本的登录页面,并且使用Vue Router和Axios进行了Token验证。用户在登录成功后,我们会将Token保存到localStorage中,并且在后续的请求中带上Token进行验证。如果Token过期或者用户未登录,我们会重定向到登录页面。
用vue路由写一个登录的跳转页面功能
首先,在 Vue 项目中安装 Vue Router:
```
npm install vue-router --save
```
然后,在 `router` 目录下创建一个 `index.js` 文件,并编写路由配置代码:
```js
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login'
import Home from '@/components/Home'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Login',
component: Login
},
{
path: '/home',
name: 'Home',
component: Home
}
]
})
```
上面的代码中,我们定义了两个路由:一个是登录页 `/`,一个是主页 `/home`。这里的 `Login` 和 `Home` 是两个组件的名称。
接下来,在 `Login` 组件中,我们可以添加一个按钮,用来触发跳转:
```html
<template>
<div>
<button @click="login">登录</button>
</div>
</template>
<script>
export default {
methods: {
login () {
this.$router.push('/home')
}
}
}
</script>
```
当用户点击登录按钮时,会触发 `login` 方法,该方法通过 `$router.push()` 函数跳转到主页。
最后,在 `App.vue` 中引入路由配置,并在模板中使用 `<router-view>` 标签来渲染路由组件:
```html
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<script>
import router from './router'
export default {
name: 'App',
router
}
</script>
```
这样,当用户访问网站时,会默认跳转到登录页,当用户成功登录后再跳转到主页。