vue的登陆验证及返回登录前页面实现
一、路由配置部分如下所示,
|
导出路由示例 let router = new VueRouter({ |
| routes: [ |
| // 登陆 |
| { name: 'login', path: '/login', component: Login }, |
| // 后台管理 |
| { name: 'admin', path: '/admin', component: Admin, children: [...goods] }, |
| ] |
| }); |
| // 添加路由前置守卫, 其实就是添加一个函数, 这个函数会在路由配置之前执行, 我们可以在这里添加一些登陆或者权限的校验 |
| // to与from是两个对象, 可以拿到url信息 |
| router.beforeEach((to, from, next) => { |
| // 通过to.name得知用户访问的是什么页面, 如果是admin相关页面, 那么继续判断用户有没有登陆 |
| // 有 => 调用next()通过访问, 没有 => 调用next({name: 'login'})跳转到登陆页面 |
| // 现在我们是在一个js模块当中, 并不是在vue组件中, 所以这里的this不是组件实例, 而是undefined, 无法this.$http与this.$api |
| Vue.prototype.$http.get(Vue.prototype.$api.islogin).then(res => { |
| let isLogin = false; |
| // 已登陆 |
| if(res.data.code == 'logined') { |
| isLogin = true; |
| } |
| // 如果访问登陆页面 |
| // 已登陆 => 为了用户友好体验, 自动跳转到后台管理 |
| // 未登陆 => 允许访问登陆页面 |
| if(to.name == 'login') { |
| if(isLogin) { |
| next({name: 'admin'}); |
| }else { |
| next(); |
| } |
| } |
| // 如果访问后台页面 |
| // 已登陆 => 允许访问后台页面 |
| // 未登陆 => 禁止访问, 自动跳转到登陆页面 |
| if(to.name != 'login') { |
| if(isLogin) { |
| next(); |
| }else { |
| // query用来设置url中的查询字符串, 我们这里把用户要访问的页面地址通过query记录下来 |
| // 将来用户登陆成功后, 再自动跳回这个地址 |
| next({name: 'login', query: {next: to.fullPath}}); |
| } |
| } |
| }) |
| }); |
| export default router; |
二,login 组件 配置部分
| 使用了路由插件之后,组件实例就有了该对象,对象有一个Push方法,可以进行路由跳转 |
| let nextPage = this.$route.query.next || '/admin'; |
| // 登陆成功后, 跳转到用户未登陆前要访问的页面 |
| this.$router.push({ path: nextPage }); |
vue的登陆验证及返回登录前页面实现的更多相关文章
- Identity Server 4登陆后返回登录前页面
- 登录成功返回登录前页面js代码
/*------ setCookie(name,value) -----------*/ function setCookie(name,value) { var Days = 30; //此 coo ...
- struts2登录后返回登录前的页面
在Action中添加 String getUrl() { return ServletActionContext.getRequest().getHeader("referer") ...
- 在Java web项目中防止用户注销后使用浏览器中的“后退”按钮返回注销前页面
一背景 公司安全整改, 要求:系统中对于关键业务操作应确保使用浏览器"后退"功能无法回到上一步操作界面. 提供:凭证提供所有被检查系统关键业务操作后回退视频,视频显示关键业务操作后 ...
- 解决session失效之后登陆后重新返回之前的页面
在全局拦截器设置保存之前的url存入session中 登陆之后的地址再重session中存 request只用作一次请求 如果页面跳转几次的话原来的url就不存在了建议存在session @Overr ...
- 微信扫码登陆,qq登陆,微博登陆等第三方登陆成功后返回原来的页面并进行跳转
原理很简单,主要是利用到window.open的第二个属性,name 前端: 原来的网页给window命名为 window.name="single" window.open(“第 ...
- PHPCMS登录后不是进入会员中心而是转入登录前页最新代码
phpcms比如会员在登录前是停留在下载页面的,但是下载页面是要求会员登录后才能下载,所以会员就有这个登陆过程,但是一般的会员系统是登录进会员中心的,就会有点体验不好 这里教大家修改下 能达到登录后 ...
- asp.net mvc 自定义全局过滤器 验证用户是否登录
一般具有用户模块的系统都需要对用户是否登录进行验证,如果用户登录了就可以继续操作,否则退回用户的登录页面 对于这样的需求我们可以通过自定义一个独立的方法来完成验证的操作,但是这样代码的重复率就大大提高 ...
- 2016-02-20WebForm登陆验证,判断用户是否登陆 PageBase类
http://blog.csdn.net/fanbin168/article/details/49404233 很多时候,WebFrom页面,我们需要判断用户是否已经登陆了.假如有很多页面,难道我们要 ...
随机推荐
- 论文阅读笔记(一)FCN
本文先对FCN的会议论文进行了粗略的翻译,使读者能够对论文的结构有个大概的了解(包括解决的问题是什么,提出了哪些方案,得到了什么结果).然后,给出了几篇博文的连接,对文中未铺开解释的或不易理解的内容作 ...
- Babel学习小记
一.babel配置文件中的plugins和presets是什么? 1.首先说说babel是什么,babel是一个JavaScript转码器,帮助我们把浏览器不兼容的ES6语法转换成ES5语法: 2.接 ...
- 强大的Resharp插件(转)
使用VS有段时间了,一直深深的折服于其强大的功能.之前一直听说有Resharp这个工具,小猪一直也没有太在意.直到今天…… 下载安装: http://www.jetbrains.com/resharp ...
- 微信小程序的桌面图标问题
提问: 笔者在发布小程序后,发现无法在安卓手机创建桌面图标,而其它的小程序却可以. 回答: 在小程序后台页面(从公众平台进入)完整填写小程序的信息,之后便可创建桌面图标. 这可能是微信的某种筛查机制在 ...
- 记一次简单的GetShell案例
案例链接: http://202.112.51.184:8007/ 打开链接,发现分了多个页面: 挨个点击,大概清楚是上传指定格式的文件然后在搜索的时候使文件执行从而GetShell,观察发现点击每个 ...
- 深入Java虚拟机:多态性实现机制——静态分派与动态分派
方法解析 Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址.这个特性给Java带来了更强大的动态扩 ...
- docker启动,重启,停止容器
docker 启动已经停止的容器 docker start 容器ID或容器名 docker 停止容器 docker stop 容器ID或容器名 docker 启动一个容器 -d:后台运行 -p:端口映 ...
- Spring框架xml配置中属性ref与value的区别
1.spring批量扫描mybatis的mapper,使用value 2.spring管理mybatis的单个mapper,用的是ref 虽然引用的是同一个bean,但两个对象的属相类型明显不一样,一 ...
- 卢卡斯定理——应用hdu4349
#include<bits/stdc++.h> using namespace std; int n; int main(){ while(cin>>n){ ; while(n ...
- JAVA -数据类型与表达式---变量与赋值
变量 程序中所管理的大部分信息,都是用变量表示的.下面讨论如何在程序中声明和使用变量. 变量(variable)代表保存数据的内存单元,变量名是内存单元的符号地址.变量声明要求编译器分配足够大的内存单 ...