当前位置:首页 > 日记 > 正文

vue实现登陆登出的实现示例

vue实现登陆登出的实现示例

最近接手的B端项目选择了vue来做,此项目使用element ui Message等为组件 望周知

需求

  • 登陆成功后跳转至首页
  • 首页不能手动跳转至登陆页
  • 登陆后跳转至目标页面

此次B端SPA项目把ak存在localstorage中

1.登陆的跳转利用全局钩子router.beforeEach

//router.jsrouter.beforeEach((to, from, next) => { // 若userkey不存在并且前往页面不是登陆页面,进入登陆 // 若userkey存在并且前往登陆页面,进入主页 const userKey = localStorage.getItem('userKey') if (!userKey && to.path !== '/login') {  next({   path: '/login',   query: { redirect: to.fullPath }  }) } else if (userKey && to.path === '/login') {  next({ path: '/' }) } else {  next() }})

上面使用了query带上目标参数

例子:#/login?redirect=%2Fapp

在登陆提交处还得对redirect参数进行处理

//若验证成功跳转 var redirect = decodeURIComponent(this.$route.query.redirect || '/')     self.$router.push({      // 你需要接受路由的参数再跳转      path: redirect     })

需求

若ak失效后发送请求时弹出失效弹出框返回到登陆页面

以下做了个简单的例子若请求返回的参数带0则登陆失效

// respone拦截器axios.interceptors.response.use( response => {  console.log(response)  const data = response.data  if (data.status === 0) {   MessageBox.alert('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {    confirmButtonText: '确定',    type: 'warning'   }).then(() => {    localStorage.clear()    router.replace({     path: '/login'    })    return   }).catch(() => {    localStorage.clear()    router.replace({     path: '/login'    })   })  } else {   return response  } }, error => {  if (error && error.response) {   switch (error.response.status) {    case 400:     error.message = '请求错误'     break    case 401:     error.message = '未授权,请登录'     break    case 403:     error.message = '拒绝访问'     break    case 404:     error.message = (process.env.NODE_ENV === 'production' ? `请求地址出错` : `请求地址出错: ${error.response.config.url}`)     break    case 408:     error.message = '请求超时'     break    case 500:     error.message = '服务器内部错误'     break    case 501:     error.message = '服务未实现'     break    case 502:     error.message = '网关错误'     break    case 503:     error.message = '服务不可用'     break    case 504:     error.message = '网关超时'     break    case 505:     error.message = 'HTTP版本不受支持'     break    default:   }   Message({    message: error.message,    type: 'error',    duration: 5 * 1000   })  }  return Promise.reject(error) })

需求

手动登出

 loginOut() {   var self = this   this.$confirm('您确定要退出吗?', '退出管理平台', {    confirmButtonText: '确定',    cancelButtonText: '取消'   }).then(() => {    const info = {     'userkey': localStorage.getItem('userKey')    }    self.$store.dispatch('LogOut', info).then(() => {     self.$router.push({ path: '/login' })    }).catch(() => {    })   }).catch(() => {   })  }

简单的登陆登出结束啦~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

webstorm添加vue.js支持的方法教程

webstorm添加vue.js支持的方法教程

方法,教程,支持,电脑软件,webstorm,前言WebStorm是一款强大的前端开发软件,vue是当前前端热门技术栈。对于WebStorm默认的配置,它会把vue当成文本文件处理,从而无法进行很多智能的编辑。本人使用的是webstorm2016 2.3版本,结果竟然不支持vue文…

powerpoint打开文件错误怎么办

powerpoint打开文件错误怎么办

打开文件,错误,启动,解决方法,电脑软件,  在日常的办公中,使用PowerPoint绝对是少不了的,而在使用PowerPoint的过程中,有时我们会发现PowerPoint文件打不开了,弹出提示的错误信息,怎么解决呢?下面小编马上就告诉大家PowerPoint启动出错的解决…

ps绘制一枚简单的中秋月饼教程

ps绘制一枚简单的中秋月饼教程

教程,绘制,中秋月饼,一枚,简单,效果图:主要过程:教程结束,以上就是ps绘制一枚简单的中秋月饼教程的全部内容,希望大家喜欢!小编在这里提前祝大家中秋节快乐!相关教程推荐:Photoshop绘制玫瑰豆沙中秋月饼Coreldraw怎么使用缩放和手形工具处理中秋月…

使用jQuery和ajax代替iframe的方法

使用jQuery和ajax代替iframe的方法

方法,详解,电脑软件,jQuery,ajax,iframe虽然好用,但是其弊端也很明显,一是它不能使用于响应式布局,iframe的使用必须指定高度,而响应式布局的高度兵分固定的。其次iframe不易被搜索引擎的爬虫解读,特别是iframe中嵌套iframe,这是会被搜索引擎认为…

Javascript实现数组中的元素上下移

Javascript实现数组中的元素上下移

元素,组中,电脑软件,Javascript,前言我们交换数组可以实现元素上下移动了,这个效果我们在表格或以前排序算法中都会用到,下面来看一个JavaScript下实现交换数组元素上下移动例子在写项目的时候,要实现一个数组记录上下移动的示例。写起来也没…

解决option标签selected=selected

解决option标签selected=selected

属性,失效,标签,电脑软件,option,要在select标签上面加上autocomplete="off"关闭自动完成,不然浏览器每次刷新后将自动选择上一次关闭时的option,这样默认属性selected="selected"就会失效啦要记住每次遇到select标签时就最好要加上autoc…

在word2013中如何计算表格数据

在word2013中如何计算表格数据

数据,计算,表格,电脑软件,  Word中的表格不仅可以手动输入数据,同时也可以进行自动计算。下面介绍了4种常用计算方法(求和、求均值、求最大值、求最小值),接下来就由小编给大家分享下word2013计算表格数据的技巧,希望能帮助到您。word2013计…

Fireworks将jpg转换成png格式

Fireworks将jpg转换成png格式

转换成,格式,电脑软件,Fireworks,jpg,Fireworks中怎么把jpg图片转换成png格式?其实方法很简单,下面小编就为大家详细介绍Fireworks将jpg图片转换成png格式方法,一起来学习吧!步骤:1、首先找到桌面上的Fireworks软件2、打开它3、接着我们有一个PN…

html5+canvas实现支持触屏的签名插

html5+canvas实现支持触屏的签名插

插件,支持,触屏,教程,电脑软件,前言大家在日常开发中使用该jQuery插件来制作在线签名,用户绘制的东西以图片的形式保存下来,非常方便实用。下面将实现支持的方法分享给大家,供大家参考学习,下面来一起看看详细的介绍吧。方法如下:使用该签名插件…

ps球面工具怎么使用? ps制作球面化

ps球面工具怎么使用? ps制作球面化

文字,教程,工具,球面,电脑软件,ps的滤镜功能中有球面化效果,该怎么使用这个功能制作球面化文字呢?下面我们就来看看详细的教程。1、新建文档2、将图层1背景设为黑色,并创建图层23、选择文字工具在图层2中输入文字4、选中图层2然后在菜单栏中选…

JavaScript上传文件时不用刷新页面

JavaScript上传文件时不用刷新页面

方法,上传文件,刷新页面,推荐,电脑软件,用js给出一个上传文件时不用刷新页面的方案 <input id="upload" type="file"/> <button id="upload-btn">upload</button> document.getElementById('upload-btn').onclick = function(){ …