共计 1262 个字符,预计需要花费 4 分钟才能阅读完成。
后台的 php 请求就是接收这两个参数
login.vue
<template> | |
<div class=''> | |
<input type="text" v-model="name" /> | |
<input type="password" v-model="password" /> | |
<button type="primary" @click="submitForm"><router-link :to="{path:'/'}"> 提交 </router-link></button> | |
</div> | |
</template> | |
<script> | |
import axios from 'axios'; | |
export default {data(){ | |
return{ | |
name:'', | |
password:'', | |
} | |
}, | |
methods:{submitForm:function(){var params = new URLSearchParams(); | |
params.append('name', this.name); | |
params.append('password',this.password); | |
axios({ | |
method: 'post', | |
url: '/api/bbb.php', | |
data:params | |
}).then((resp)=>{sessionStorage.setItem('token',resp.status)// localStorage | |
// 以 key value 的形式将值存放到 sessionStorage 中。console.log(resp); | |
}).catch((error)=>{console.log(error); | |
}) | |
} | |
} | |
} | |
</script> | |
router
{ | |
path: '/', | |
name: 'HelloWorld', | |
component: HelloWorld, | |
meta:{requireAuth:true} | |
}, |
main.js
router.beforeEach((to, from, next) => {console.log(to); | |
console.log(from); | |
console.log(sessionStorage.getItem('token')) | |
if (to.meta.requireAuth) { // 判断该路由是否需要登录权限 | |
if(sessionStorage.getItem('token')){ // 判断 sessionStorage 是否存在 token | |
alert("已经登录了") | |
next();}else{ | |
// 防止死循环 | |
alert("暂时未登录") | |
if (to.path === '/login') {next(); | |
return | |
}else{ | |
next({path: '/login',}); | |
} | |
} | |
} | |
else {next(); | |
} | |
/* 如果本地 存在 token 则 不允许直接跳转到 登录页面 */ | |
if(to.fullPath == "/login"){if(localStorage.getItem('token')){ | |
next({path:from.fullPath}); | |
}else {next(); | |
} | |
} | |
}); |
注意一定要在 router 实例前使用
正文完