这是我做前端一来的第一篇文章,都不知道该怎么开始了。那就直接奔主题吧。先讲讲这个功能的实现场景吧,我们小组使用vue全家桶实现了一个单页面应用,最初就考虑对登录状态做限制。比如登录后不能后退到登录页面,退出到登录页面后,不能后退刚刚登录的页面。在main.js中:

new Vue({
store,
router
}).$mount('#app')
router.beforeEach((to, from, next) => {
window.scrollTo(0, 0)
console.log(1234)
if (!to.meta.requiresAuth) {
if (!store.state.collectItems.bAuth) {
next({
path: '/'
// query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
if (store.state.collectItems.bAuth && to.fullPath === '/') {
console.log()
next(false)
return
}
next()
}
})

对那些是登录才能访问的,那些是没有登录就可以直接访问的,都做限制。这些功能都是实现的没有问题的。但是发现了一个问题就是,但是发现了一个问题就是大家直接在浏览器的地址栏输入一个登录后才能访问的页面,虽然不能访问到页面,但是页面会卡在这里不动。原本设置的的路由跳转根本就没有起到作用。后来发现,因为是这块的路由根本就没有发挥作用的时候,页面就已经报错了。有一天突然和我们小组的妹子讨论的时候,突然提到能不能在页面渲染先设置一个路由呢,于是就在 new Vue实例前面加了一个router的判断:

router.beforeEach((to, from, next) => {
if (to.fullPath !== '/') {
next({
path: '/'
})
return
}
next()
}) 瞬间之前的问题解决了。现在直接访问那些只有登录后才能访问的面,就直接跳转到了登录页面了。

整理后的代码:

router.beforeEach((to, from, next) => {
if (to.fullPath !== '/') {
next({
path: '/'
})
return
}
next()
})
new Vue({
store,
router
}).$mount('#app')
router.beforeEach((to, from, next) => {
window.scrollTo(0, 0)
console.log(1234)
if (!to.meta.requiresAuth) {
if (!store.state.collectItems.bAuth) {
next({
path: '/'
// query: { redirect: to.fullPath }
})
} else {
next()
}
} else {
if (store.state.collectItems.bAuth && to.fullPath === '/') {
console.log()
next(false)
return
}
next()
}
})

不对的地方还望大家指点,谢谢!

Vue-router实现单页面应用在没有登录情况下,自动跳转到登录页面的更多相关文章

  1. mvc不登录的情况下无法跳转至其他页面--解决方法之一

    在每个控制器里,加以下方法 /// <summary> /// 在调用视图之前拦截非法用户 /// </summary> /// <param name="fi ...

  2. s实现指定时间自动跳转到某个页面

    --js实现指定时间自动跳转到某个页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...

  3. 前端跳转处理--房天下的访问页面部分ip自动跳转到登录页面的解决办法(xjl456852原创)

    朋友说自己在访问房天下的页面时,他们页面进行了跳转,跳转到登录页面,说是前端跳转.让我也看看,我看我的机器没有进行跳转. 后来就发现有的机器在访问页面会自动跳转到登录页面.有的不会进行跳转. 比如访问 ...

  4. 解决IE报错[vue router]Failed to resolve async component default:strict 模式下不允许分配到只读属性

    之前遇到过一个奇怪的问题,在其他浏览器下一切正常,但在万恶的IE下,却一直不行. 具体问题场景就是:比如orderDetail页面出现问题,那么只要是路由跳转的,点第1次无法跳转,必须得点第2次才可以 ...

  5. JS实现倒计时网页自动跳转(如404页面经常使用到的)

    在web前端设计中,我们经常会遇到需要实现页面倒计时跳转的功能,例如在404页面中也会经常使用到此功能,那么如何实现呢,其实实现方法很简单,实现代码如下:<title>JS倒计时网页自动跳 ...

  6. PHP根据设备类型自动跳转相应网址页面,这个现在实用

    现在移动设备上网也很方便,比如Android智能手机,iPhone/iPad等,很多网站都相继推出了针对电脑和这些手机等移动设备访问的网页,如果你的系统是用PHP写的,那面本代码对你会很实用,可根据这 ...

  7. Session过期后自动跳转到登录页面

    最近研究如果用原生的Filter来判别session存在否或者过期否.来跳转到的页面实例,下载来展示代码. 因为顾虑器是每次请求能会进入的,所以可以设置了,进行拦截判断 1.配置web.xml < ...

  8. Asp.net MVC访问框架页中嵌套的iframe页面时,如果session或cookie过期,登录验证超时怎样自动跳转到登录页

    一般登录验证的过滤器中,使用验证过滤器的Redirect方法,将请求重定向到指定的URL.但是如果我们要访问的页面是一个嵌套在框架页中的iframe页面时,这种重定向只会对iframe页面凑效,也就是 ...

  9. vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤

    通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项 ...

随机推荐

  1. c语言刷 链表题记录

    61. 旋转链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode * ...

  2. 开发并发布依赖包,作为工具包供别人npm install

    1.初识包及 npm 包的概念: nodejs 中的第三方模块叫包 不同于 nodejs 中的内置模块与自定义模块,包是由第三方个人或团队开发出来的,免费供所有人使用 nodejs 中的包都是免费开源 ...

  3. JZ-069-在 O(1) 时间内删除链表节点

    在 O(1) 时间内删除链表节点 题目描述 在 O(1) 时间内删除链表节点. 方案:如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复 ...

  4. 怎么在 liunx 上安装docker

    怎么在 liunx 上安装docker 作为一个非科班出身自学的小白,踩过很多的坑,特此留下记录 以下在虚拟机上示例 系统:linux(centos7) 操作方式:xshell连接终端操作 1.打开x ...

  5. mysql-索引对性能影响

    1.添加索引后查询速度会变快 mysql中索引是存储引擎层面用于快速查询找到记录的一种数据结构,索引对性能的影响非常重要,特别是表中数据量很大的时候,正确的索引会极大的提高查询效率.简单理解索引,就相 ...

  6. js-表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 物理机迁移至vmware

    使用用vmware vcenter converter standalone将物理机迁移到虚拟机. 6.2版本下载地址如下: https://www.filehorse.com/download-vm ...

  8. 记一次mybatis-plus遇到的问题

    在用了 springboot 和 mybatis-plus很久之后, 有一天突然看到配置文件有点繁杂, 想将相同的配置拉到application.yml里, 就在将配置拉过去后, 问题就开始出现了. ...

  9. ArcGIS下载安装

    鉴于各位在安装过程中碰到诸多问题,博主打算分享下安装过程 ,仅供参考 一.注意:两个版本安装之前都必须的步骤 安装license Manager10.2,下载完成后,打开安装点击SetUp.exe,如 ...

  10. kubernetes修改ingress默认端口

    kubectl edit daemonset nginx-ingress-controller -n ingress-nginx containers: - args: - /nginx-ingres ...