• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Vue中的验证登录状态的实现方法

vue 搞代码 4年前 (2022-01-08) 28次浏览 已收录 0个评论

这篇文章主要介绍了Vue中的验证登录状态的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Vue项目中实现用户登录及token验证

先说一下我的实现步骤:

  1. 使用easy-mock新建登录接口,模拟用户数据
  2. 使用axios请求登录接口,匹配账号和密码
  3. 账号密码验证后, 拿到token,将token存储到sessionStorage中,并跳转到首页
  4. 前端每次跳转时,就使用导航守卫(vue-router.beforeEach)判断 sessionStorage 中有无 token ,没有就跳转到登录页面,有则跳转到对应路由页面。
  5. 注销后,就清除sessionStorage里的token信息并跳转到登录页面

使用easy-mock模拟用户数据

我用的是easy-mock,新建了一个接口,用于模拟用户数据:

 { "error_code": 0, "data": [{ "id": '1', "usertitle": "管理员", "username": "admin", "password": "123456", "token": "@date(T)", }, { "id": '2', "usertitle": "超级管理员", "username": "root", "password": "root", "token": "@date(T)", } ] } 

login.vue中写好登陆框:

  <div> <p>用户名:</p><p>密码:</p><button>登录</button></div>

然后下载axios:npm install axios –save,用来请求刚刚定义好的easy-mock接口:

 login(){ const self = this; axios.get('https://easy-mock.com/mock/5c7cd0f89d0184e94358d/museum/login').then(response=>{ var res =response.data.data, len = res.length, userNameArr= [], passWordArr= [], ses= window.sessionStorage; // 拿到所有的username for(var i=0; i{ console.log('连接数据库失败!') }) } 

这一步最重要的是当账号密码正确时,把请求回来的token放在sessionStorage中,

配置路由

然后配置路由新加一个meta属性:

 { path: '/', name: 'login', component: login, meta:{ needLogin: false } }, { path: '/index', name: 'index', component: index, meta:{ needLogin: true } } 

判断每次路由跳转的链接是否需要登录,

导航卫士

在main.js中配置一个全局前置钩子函数:router.beforeEach(),他的作用就是在每次路由切换的时候调用
这个钩子方法会接收三个参数:to、from、next。

  • to:Route:即将要进入的目标的路由对象,
  • from:Route:当前导航正要离开的路由,
  • next:Function:个人理解这个方法就是函数结束后执行什么,先看官方解释
    • 1.next():进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是confirmed(确认的),
    • 2.next(false):中断当前的导航。如果浏览器的url改变了(可能是用户手动或浏览器后退按钮),那么url地址会重置到from路由对应的地址。
    • 3.next(‘/’)或next({path:’/’}):跳转到一个不同的地址。当前导航被中断,进入一个新的导航。

用sessionStorage存储用户token

 //路由守卫 router.beforeEach((to, from, next)=>{ //路由中设置的needLogin字段就在to当中 if(window.sessionStorage.data){ console.log(window.sessionStorage); // console.log(to.path) //每次跳转的路径 if(to.path === '/'){ //登录状态下 访问login.vue页面 会跳到index.vue next({path: '/index'}); }else{ next(); } }else{ // 如果没有session ,访问任何页面。都会进入到 登录页 if (to.path === '/') { // 如果是登录页面的话,直接next() -->解决注销后的循环执行bug next(); } else { // 否则 跳转到登录页面 next({ path: '/' }); } } }) 

这里用了router.beforeEach vue-router导航守卫

每次跳转时都会判断sessionStorage中是否有token值,如果有则能正常跳转,如果没有那么就返回登录页面。

注销

至此就完成了一个简单的登录状态了,浏览器关闭后sessionStorage会清空的,所以当用户关闭浏览器再打开是需要重新登录的

当然也可以手动清除sessionStorage,清除动作可以做成注销登录,这个就简单了。

 loginOut(){ // 注销后 清除session信息 ,并返回登录页 window.sessionStorage.removeItem('data'); this.common.startHacki<em>本文来源gao.dai.ma.com搞@代*码(网$</em>ng(this, 'success', '注销成功!'); this.$router.push('/index'); } 

写一个清除sessionStorag的方法。

一个简单的保存登录状态的小Demo。

以上就是Vue中的验证登录状态的实现方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Vue中的验证登录状态的实现方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址