若依:如何去掉首页,设置登录后跳转到第一个路由菜单

这篇具有很好参考价值的文章主要介绍了若依:如何去掉首页,设置登录后跳转到第一个路由菜单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

若依系统是一个很好用的,开源的前端后台管理系统。

最近公司有一个需求,需要把默认的首页隐藏,登录后直接跳转到路由菜单返回的第一个页面。

查找了不少资料,但是都没有实际的解决方案。若依:如何去掉首页,设置登录后跳转到第一个路由菜单

 不过最好自己还是实现了这个功能。

步骤如下:

1、首先应当找到项目里面,指定跳转到之前默认首页的路由。即'/index'

2、项目里面找到了几处,页面路径如下:

src/permission.js
src/store/permission.js
src/router/index.js
src/utils/request.js
src/system/user/profile/resetPwd.vue
src/system/user/profile/userInfo.vue
src/layout/components/Topbar.vue

1)  src/permission.js 需要修改的地方,

当登录之后,token的情况:

1.1) 这里  to.path=== '/login'   判断,当登录之后,但你想跳到登录页。那系统会跳到路由接口的第一个路由地址indexPage,因为你已经登录了,系统不会给你跳到登录页,除非你点击退出登录。

1.2) 这里  to.fullPath == '/'  判断,当登录之后,直接通过ip地址和端口号访问时,跳转到第一个路由页面indexPage。如:http://10.12.7.76:6090/,这样直接访问。

1.3) 这个 to.fullPath == '/'  判断后面的else,是为了处理两个问题

    1.3.1) 如果是点击了一个菜单,然后点击刷新,需要保持在当前的页面。

    1.3.2) 如果在当前页面点击一个按钮,通过打开新窗口跳转路由到另一个页面。如从当前故障报警详情里跳到实时监控页面。(ps:如果不这么做,你跳转去的页面会变成路由默认的第一个页面)。

没有登录,没有token的情况: 

1.4)  

// 没有token

    if (whiteList.indexOf(to.path) !== -1) {

      // 在免登录白名单,直接进入

      next()

    } else {

      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页。

      // 但to.fullPath有可能为%2F,即http://172.16.6.205:9090/login?redirect=%2F,不带任何跳转路由。这时候,请看下文中 login.vue 的跳转方法。

      NProgress.done()

    }

router.beforeEach((to, from, next) => {
  NProgress.start()
  if (getToken()) {
    // 登录之后,访问路由会执行这个方法。
    /* has token*/
    // 已经登录了,但你想跳到登录页。那系统会跳到路由接口的第一个路由地址,不会给你跳到登录页,除非你点击退出登录。
    if (to.path === '/login') {
      next({ path: '/' })
      NProgress.done()
    } else {
      if (store.getters.roles.length === 0) {
        // 判断当前用户是否已拉取完user_info信息
        store.dispatch('GetInfo').then(res => {
          // 拉取user_info
          const roles = res.roles
          store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => {
            // 根据roles权限生成可访问的路由表
            // 修改默认首页
            // console.log(accessRoutes, from, to.fullPath)
            router.addRoutes(accessRoutes) // 动态添加可访问路由表
            if (to.fullPath == '/') {
              // 当登录之后,直接通过ip地址和端口号访问时,跳转到第一个路由页面indexPage。如:http://10.12.7.76:6090/,这样直接访问。
              let pathIndex = ''
              pathIndex = accessRoutes[0].path + '/' + accessRoutes[0].children[0].path
              // replace: true只是一个设置信息,告诉VUE本次操作后,不能通过浏览器后退按钮,返回前一个路由。
              next({ path: pathIndex, replace: true }) // hack方法 确保addRoutes已完成
            } else {
              // 如果是点击了一个菜单,然后刷新,保持在当前的页面。
              // 如果是从其他页面点击,通过打开新窗口跳转路由。如从当前故障报警详情里跳到实时监控页面。
              next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
              // 使用next({ ...to, replace: true })来确保addRoutes()时动态添加的路由已经被完全加载上去。
            }
            // 修改默认首页end
          })
        })
        .catch(err => {
          store.dispatch('LogOut').then(() => {
            Message.error(err)
            next({ path: '/login' })
          })
        })
      } else {
        // 跳转到对应的页面
        next()
      }
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单,直接进入
      next()
    } else {
      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页。
      // 但to.fullPath有可能为%2F,即http://172.16.6.205:9090/login?redirect=%2F,不带任何跳转路由。这时候,请看login.vue的跳转方法。
      NProgress.done()
    }
  }
})

2) src/store/permission.js 需要修改的地方

若依:如何去掉首页,设置登录后跳转到第一个路由菜单

3)  src/router/index.js  需要把首页注释

若依:如何去掉首页,设置登录后跳转到第一个路由菜单

4) src/utils/request.js  需要修改的地方

若依:如何去掉首页,设置登录后跳转到第一个路由菜单

5) src/system/user/profile/resetPwd.vuesrc/system/user/profile/userInfo.vue

若依:如何去掉首页,设置登录后跳转到第一个路由菜单

6) src/layout/components/Topbar.vue

若依:如何去掉首页,设置登录后跳转到第一个路由菜单

3、针对  login.vue  做出相应的修改。这里也很重要。

 this.$store.dispatch('Login', params).then(() => {
              // 1、跳到登录后指定跳转的页面或者登录后跳到首页
              // this.$router.push({ path: this.redirect || '/' }).catch(() => {})
              // 2、登录后跳到路由默认的第一个路由页面
              this.$store.dispatch('GetInfo').then(res => {
                // 拉取完user_info信息
                const roles = res.roles
                this.$store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => {
                  // 根据roles权限生成可访问的路由表
                  // console.log(accessRoutes, from, to.fullPath)
                  this.$router.addRoutes(accessRoutes) // 动态添加可访问路由表
                  let pathIndex = ''
                  pathIndex = accessRoutes[0].path + '/' + accessRoutes[0].children[0].path // 设置默认首页地址indexPage
                  // console.log(this.redirect, pathIndex)
                  // 1、this.redirect == undefined,主要针对直接从http://172.16.6.205:9090/login,登入系统。
                  // 2、this.redirect == '/',主要针对直接从这个http://172.16.6.205:9090/login?redirect=%2F,登入系统。因为没有设置重定向的路由
                  // 如果登录的时候出现1、2两种情况,那么就跳到路由的第一个路由页面,如果登录的时候,有设置可以访问的重定向地址,那么登录后就跳到重定向地址。
                  if (pathIndex != '') {
                    this.$router.push({ path: this.redirect == '/' || this.redirect == undefined ? pathIndex : this.redirect }).catch(() => {}) // 跳转重定向页面或跳到默认首页indexPage
                  }
                })
              })
              .catch(err => {
                this.$store.dispatch('LogOut').then(() => {
                  Message.error(err)
                  next({ path: '/login' })
                })
              })
            })
            .catch(error => {
              this.errorMsg = error
              this.loading = false
              this.getCode()
            })
        

3.1)没有token,在登录页面登录,会先执行这个登录方法。

          this.$store.dispatch('Login', params).then(() => {})

3.3.1)访问登录页面,调起获取路由接口获取到路由数据后,然后判断是否有设置重定向的路由地址。

a、this.redirect == undefined,主要针对直接从http://172.16.6.205:9090/login,登入系统。

b、this.redirect == '/',主要针对直接从这个http://172.16.6.205:9090/login?redirect=%2F,登入系统。因为没有设置重定向的路由

如果登录的时候,出现a、b两种情况,那么就跳到路由的第一个路由页面;

如果登录的时候,有设置可以访问的重定向地址,那么登录后就跳到重定向地址。

 if (pathIndex != '') {

      this.$router.push({ path: this.redirect == '/' || this.redirect == undefined ? pathIndex : this.redirect }).catch(() => {}) // 跳转重定向页面或跳到默认首页indexPage

}文章来源地址https://www.toymoban.com/news/detail-406023.html

到了这里,关于若依:如何去掉首页,设置登录后跳转到第一个路由菜单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • vue 发现页面找不到3秒后跳转到本页面

    vue 发现页面找不到3秒后跳转到本页面

    这个路由跳转用到的是编程式跳转 this.$router.push 两种写法: 第一种可以通过 path 来跳转 goto(\\\'/find\\\') find是路由里边的路径 通过goto来绑定一个方法 里边传参 倒计时3秒 第二种通过name来跳转页面 在路由里边多写一行 name属性;并 修改goto里边的参数 ,其他都一样

    2024年02月12日
    浏览(7)
  • JavaEE 课堂案例: 简单实现登录功能: 1.前端用户自己输入账号密码, 点击登录 2.服务器端获得账号密码, 数据库查询 jar JdbcTemplate 3.登录成功 -> 跳转到首页

    JavaEE 课堂案例: 简单实现登录功能: 1.前端用户自己输入账号密码, 点击登录 2.服务器端获得账号密码, 数据库查询 jar JdbcTemplate 3.登录成功 -> 跳转到首页

    1 首先导入jar包(看个人情况导入)     这里需要注意的是平时我们导入jar包是导入在自己的工程或者moudle下面的,在这里我们必须把jar包导入在WEB-INF中(详情可看图),从图中可看出,一个工程在编译过后,只有src下的数据会编译到WEB-INF下的classes目录中,所以需要将静态

    2024年02月03日
    浏览(5)
  • 帝国CMS商城提交订单后跳转到订单列表页的实现方法

    帝国CMS商城提交订单后默认返回购物车页面,但订单已经提交了,购物车基本上是空空如也,所以更希望提交订单后跳转到订单列表页查看订单。 打开 e/ShopSys/class/ShopSysFun.php 这个文件, 找到:(约534行) $location=\\\"buycar/\\\"; 修改为: $location=\\\"ListDd/\\\"; 不想改文件可以参考:htt

    2024年02月03日
    浏览(39)
  • uniapp项目编译成H5后跳转到微信小程序(支持微信扫码、支付宝扫码)

    uniapp项目编译成H5后跳转到微信小程序(支持微信扫码、支付宝扫码)

    uniapp项目编译成 H5 后跳转到 微信小程序 (支持微信H5、支付宝H5) 场景:1、微信扫码跳转到该H5中后点击某事件(或者不点击直接跳转)需要跳转到微信小程序;2、支付宝扫码跳转到H5中后点击某事件(或者不点击直接跳转)需要跳转到微信小程序 思路:调用后端接口返回

    2024年02月13日
    浏览(34)
  • js做简单的登录页面以及附加条件,登录成功后跳转

    js做简单的登录页面以及附加条件,登录成功后跳转

    新手第一次上传,还不会介绍,很简单,能看懂不难的   成功后跳转页面代码就更简单了  

    2024年02月11日
    浏览(5)
  • Django实现用户注册登录,表单提交后跳转网页(学习笔记)

    Django实现用户注册登录,表单提交后跳转网页(学习笔记)

    效果图如下:   使用命令提示符,进入想存放项目的目录: 在项目coco目录下新建static文件夹,用于存放网页文件的css,js,imgs 在coco_app目录下新建文件夹templates,用于存放需要用到的HTML网页 打开coco文件夹中的settings.py注册coco_app 引用templates 连接数据库,这里我用的MySQL数据

    2023年04月11日
    浏览(15)
  • 在Vue3项目中,输入没有路由对应的路径时候,怎么跳转到404或者首页

    在一个Vue3应用中,通常情况下,我们使用Vue Router来处理路由。在Vue Router中,当用户请求输入一个不正确的URL路径时,没有路由与其相匹配,这时候会返回一个默认的404页面或者重定向到首页。因此,本文将通过以下几个方面来讨论如何在Vue3项目中实现这一功能。 1. 异步组

    2024年02月01日
    浏览(5)
  • uniapp 获取手机定位权限及禁止拒绝后跳转设置页面

    问题:获取手机定位权限,在用户点击拒绝后,再次点击定位按钮,手机无反应。这里,安卓系统2次拒绝之后,默认为禁止询问弹窗弹出,所以再点击定位肯定没有反应。 一、解决思路:第一想到,检查是否打开GPS功能(Android),打开了直接跳转到地图定位页面,关闭状态

    2024年02月03日
    浏览(10)
  • Vue实现未登录跳转到登录页

    Vue实现未登录跳转到登录页

    1、登录页登录成功时将服务端返回的标识存放起来 2、在router中给不需要登录的页面设置 meta : { auth : false },如首页  3、使用路由前置守卫beforEach,由于给路由设置了meta : { auth : false },如果是符合该属性时则不需要跳转登录页  4、接下来根据token是否存入到 localstorage 来进

    2024年02月06日
    浏览(6)
  • 6、ES单机设置用户名密码、集群设置用户名密码、es-head登录、如何去掉密码

    6、ES单机设置用户名密码、集群设置用户名密码、es-head登录、如何去掉密码

    在配置文件中添加如下参数cat config/elasticsearch.yml: 关闭es服务如果服务启动(kill进程id) 启动es服务 待服务启动完成,且能正常访问后,执行 集群此时是启动状态 elasticsearch-head查看 通过浏览器查看 http://192.168.180.45:9200/_cat/nodes?v 进入主节点的bin目录下执行 再次在bin目录输

    2024年04月26日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包