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页面,我们需要判断用户是否已经登陆了.假如有很多页面,难道我们要 ...
随机推荐
- Linux 下的各种环境安装
Linux 下的各种环境安装 1.安装 python Centos7 安装 python 2.7 : https://www.cnblogs.com/Jomini/p/10507077.html ...
- java hashmap的一些分析记录
最近朋友去面试被问了些hashmap相关的问题,hashmap的初始容量啊,什么操作最耗时等,之前看过hashmap的源码,正好这里也在总结下. 主要围绕下面几个点: HashMap是由数组+链表(j ...
- IAR中如何定向把数组和函数放在指定的地址单元
1. 指定数组到特定的Flash单元#pragma location = 0x000FFF00 __root const char Flash_config[] = {0x0,0x1,0x2,0x3, ...
- L2-007 家庭房产 (25 分) (并查集)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...
- 【转】JAVA错误:The public type *** must be defined in its own file***
出现The public type xxx must be defined in its own file这个问题,是由于定义的JAVA类同文件名不一致.public类必须定义在它自己的文件中. 解决 ...
- multiwan 脚本
以下为校区ACM实验室多拨脚本,使用了macvlan模块,具体策略路由和连接标记等思路就不解释了. #! /bin/bash getip() { |grep -o -e 'inet addr:[^ ] ...
- python介绍及下载
python介绍 Python是一种计算机程序设计语言.是一种面向 对象的动态类型语言,支出被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多的被用于独立的.大型醒 ...
- python2使用eval 让除法可以保留小数
使用的Python版本2.7, 我在使用eval('1/3')发现一个问题,结果都是去掉小数,保留了整数.但是我需要保留小数,各种查资料,最后在一大神指点下,成功解决这个问题,解决办法是: 加载模块: ...
- 微信小程序rich-text 文本首行缩进和图片居中
微信小程序开发使用rich-text组件渲染html格式的代码,常常因为不能自定义css导致文本不能缩进,以及图片不能居中等问题,这里可以考虑使用js的replace方法,替换字符串,然后在渲染的同时 ...
- STM32的定时器定时时间计算(计数时间和中断定时时间)
时基单元 可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器.这个计数器可以向上计数.向下计数或者向上向下双向计数.此计数器时钟由预分频器分频得到. 计数器.自动装载寄存器和预 ...