若依框架登录后跳转其他页面&获取不同的菜单&登录进入后跳转至动态路由的第一个路由

这篇具有很好参考价值的文章主要介绍了若依框架登录后跳转其他页面&获取不同的菜单&登录进入后跳转至动态路由的第一个路由。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近碰到的需求是登录进入后,先跳转至一个自己定义的页面,在这个页面选择一个系统后,进入若依的系统,根据选择的系统获取相应的菜单,进入页面后默认跳转至后端返回的动态路由的第一个路由

1.首先在登录页面login.vue做如下改动

写成你要跳转过去的页面:(这个路由如果是自己定义的,要记得在router文件夹下声明一下路由)

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript
若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

在你自定义的页面内,把原本写在登录页面跳转的路由,写到你在自定义页面要跳转的地方,这个地方我没有写原本的redirect,不知道有没有影响.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

这样在你登录后,页面就不会按照之前默认的跳到系统首页了,而是会跳转至你定义的路由;

 2.找到src目录下permission.js文件,作如下改动:

这里主要设置的就是跳转至自定义页面,设置跳转的默认首页.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

router.beforeEach((to, from, next) => {
  NProgress.start()
  if (getToken()) {
    to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
    /* has token*/
    if (to.path === '/login') {
  // 意思是如果你已经登录了,而且现在还可以获取到token即登录没有过期,你要去登录页的话是去不了的, 
   // 但是去其他页面是放行的,去其他页面就会走下面的else。
      // 登录后不可再返回至登录页,此处next不放行
      next({ path: '/' })
      NProgress.done()
    } else {
      if (from.path === '/login') {
        // 如果是从登录页过来,就直接放行到要去的路由,什么都不做
        // 在这里只有一种可能性,就是从/login来,去/channel路由,即跳转至自定义页面,在这里因为什
        //么都没做,所以目前为止,还没有获取到系统的菜单
        next();
        return;
      }
      // 我看了下这里只有登录后跳转的时候以及刷新系统页面的时候会进来,
      // 在我们跳转自定义页面的时候并不会进来,走的是上面的if,
      // 只有从自定义页面往其他页面跳转的时候才会走这里
      if (store.getters.roles.length === 0) {
        isRelogin.show = true
        // 判断当前用户是否已拉取完user_info信息
        store.dispatch('GetInfo').then(() => {
          isRelogin.show = false
         // 确认当前已经登录了,能获取到登录的用户信息
         // 进入到这里的时候,我已经选择了自己接下来要进入的系统,要把系统的
         // 标志id先存起来,然后获取菜单的时候传过去
          let systemId=sessionStorage.getItem("systemId");
          store.dispatch('GenerateRoutes',{systemId}).then(accessRoutes => {
            // 根据roles权限生成可访问的路由表
            router.addRoutes(accessRoutes) // 动态添加可访问路由表
            // 接下来是设置默认跳转的页面
            let path="";
            // 设置动态路由的第一个路由为跳转的默认页面
            path=accessRoutes[0].path+"/"+accessRoutes[0].children[0].path;
            if(from.path=="/channel"){
              // 如果是从自定义页面跳转过去,就跳转至动态路由的第一个路由
              next({path,replace:true})
            }else{
      // 如果是点击了一个菜单,然后刷新的页面,就保持在当前的页面,防止刷新后跳转到了自己定义的页面
              next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
            }
          })
        }).catch(err => {
          store.dispatch('LogOut').then(() => {
            Message.error(err)
            next({ path: '/' })
          })
        })
      } else {
        next()
      }
    }
  } else {
    // 没有token
    if (whiteList.indexOf(to.path) !== -1) {
      // 在免登录白名单,直接进入
      next()
    } else {
      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
      NProgress.done()
    }
  }
})

3.在store文件夹下找到permission.js文件,作如下变动:

这里主要设置的就是获取路由的时候根据传递的参数获取相应的路由菜单,以及默认首页的设置.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript
若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

  state: {
    routes: [],
    addRoutes: [],
    defaultRoutes: [],
    topbarRouters: [],
    sidebarRouters: [],
    indexPage:"",// 修改跳转首页
  },
  mutations: {
    SET_ROUTES: (state, routes) => {
      state.addRoutes = routes
      state.routes = constantRoutes.concat(routes)
    },
    SET_DEFAULT_ROUTES: (state, routes) => {
      state.defaultRoutes = constantRoutes.concat(routes)
    },
    SET_TOPBAR_ROUTES: (state, routes) => {
      state.topbarRouters = routes
    },
    SET_SIDEBAR_ROUTERS: (state, routes) => {
      state.sidebarRouters = routes
    },
    SET_INDEX_PAGE:(state,routes)=>{
      state.indexPage=routes
    }
  },
  actions: {
    // 生成路由
    GenerateRoutes({ commit }, param) {
      return new Promise(resolve => {
        // 向后端请求路由数据
        getRouters({ menuFlag: param.systemId }).then(res => {
          const sdata = JSON.parse(JSON.stringify(res.data))
          const rdata = JSON.parse(JSON.stringify(res.data))
          const firstPage=res.data[0].path+"/"+res.data[0].children[0].path;
          const sidebarRoutes = filterAsyncRouter(sdata)
          const rewriteRoutes = filterAsyncRouter(rdata, false, true)
          const asyncRoutes = filterDynamicRoutes(dynamicRoutes);
          rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
          router.addRoutes(asyncRoutes);
          commit('SET_ROUTES', rewriteRoutes)
          commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes))
          commit('SET_DEFAULT_ROUTES', sidebarRoutes)
          commit('SET_TOPBAR_ROUTES', sidebarRoutes)
          commit('SET_INDEX_PAGE',firstPage)
          resolve(rewriteRoutes)
        })
      })
    }
  }

4.找到src/layout/components/Sidebar/logo.vue文件,作如下改动:

这里主要设置的就是进入系统后点击若依的logo跳转的页面,改成我们设置的默认首页. 

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

 5.找到src/layout/components/TagsView/index.vue,作如下改动:
这里主要设置的是关闭所有tagview后,会展示默认页面,防止关闭所有的tagview后页面空掉,不然太不美观.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript 这里设置的是当展示的是默认页面时,tagview是不允许关闭的,即下面的效果:

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

这里设置的是所有能被关闭的tagview被关闭后,会跳转至默认页面.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

 6.找到src/plugns/tab.js,作如下改动:

这里设置的是编辑完个人中心后点击关闭后跳转的页面,防止点击关闭后页面空掉.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

 7.找到src/components/BredCrumb/.index.vue,作如下变动:

这里设置的是隐藏掉若依原本面包屑导航中的首页

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

 8.找到src/views/error/401.vue和404.vue,作如下改动:

这里设置的是从401和404页面返回首页,返回至默认首页;

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

 大概就是以上步骤,有遗漏的再补充,因为本人没有完全理解吃透若依的框架,而且有些地方是借鉴的别的大佬的,所以有那些说的不清楚的地方,还请见谅.

若依项目启动时如何自动打开指定的页面,Vue,前端,javascript

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

 

 

 

 

到了这里,关于若依框架登录后跳转其他页面&获取不同的菜单&登录进入后跳转至动态路由的第一个路由的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 代码模版-登录成功后跳转首页

    默认已经安装了 vue-router 路由依赖 已经写好了 src/router/index.js 和 src/views/login.vue 组件了 在 src/views/login.vue 组件中添加这样的 js

    2024年02月15日
    浏览(47)
  • vue 发现页面找不到3秒后跳转到本页面

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

    2024年02月12日
    浏览(49)
  • 学习若依框架----之----获取登录登录系统、ip、浏览器信息

    若依里面,创建登录日志是根据异步任务进行新增,设置的有一个延时任务,登录之后,创建登录日志。本文章是非异步任务新增。大概思路是:在登录、注册、退出登录完成返回之前,调用日志工具,进行新增日志操作。 备注: 重点是日志工具逻辑,先判断是不是内网,

    2023年04月15日
    浏览(158)
  • Vue项目启动后跳转到制定路由页面

    今天把自己的项目布局完成了,但是想在项目启动的时候默认跳转到登录页面。 这其实需要借助路由实现跳转 开始编写之前,大家可以看下我的布局: 关于如何安装并使用路由,可以参考:Vue安装并使用路由和路由器 需要对index.js进行修改,根据需求配置需要跳转的那个组

    2024年01月18日
    浏览(73)
  • 【自用】VUE 获取登录用户名 显示在其他页面上

    步骤1: 安装 js-cookie 依赖 步骤2: 在登录页面中引入 js-cookie 依赖 步骤1: 步骤1: 在其他页面中引入 js-cookie 依赖 步骤2: 设定一个 computed 计算属性,并在其中写入获取登录界面 cookies 的方法: 步骤3: 在需要使用的地方使用 插值表达式 {{xxx}} 来使用它! (请注意,我们需

    2024年02月01日
    浏览(49)
  • uni-app小程序跳转其他小程序、获取目标小程序的页面地址

    一、小程序中跳转其他小程序 1、在manifest.json中的mp-weixin目录下添加配置(替换目标小程序appid) 2、在需要跳转的页面添加按钮点击事件,替换path以及传参 二、获取其他小程序页面地址 微信小程序中官方文档获取地址入口已经关闭不能用了(https://kf.qq.com/faq/180725biaAn21807

    2024年02月12日
    浏览(44)
  • 若依框架 - 短时间内断开连接,重复跳转至登录界面问题的解决方法(docker 与 redis)、令牌超时问题

    在很短的时间内不去操作系统,就会自动提示, 登录状态已过期,您可以继续留在该页面,或者重新登录 ,所以老是要跳转到登录界面,这一点很麻烦,非常影响用户体验。 令牌设置超时时间,过于短暂; redis 服务的启动配置文件有问题,没有配置密码登录,而是默认配置

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

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

    2023年04月11日
    浏览(82)
  • dede织梦自定义表单提交成功后跳转页面实现方法

    今天我们碰到一位客户,想要完成织梦表单提交后,跳转到一个页面显示:已提交成功,请耐心等待回复。处理到这里,我们想到了这个功能还是很容易完成的,需要对plus/diy.php处理提示页面。 修改方法 默认的是:“发布成功,请等待管理员处理...”,默认跳转页面是网站

    2024年02月03日
    浏览(100)
  • uniapp实现扫一扫功能,扫码成功后跳转页面

    uniapp官方有提供的相关api实现跳转到web网页(h5)的功能,在开发小程序中,是一项很常见的功能开发。该功能使用到的api uni.scanCode 详细步骤如下: 1.在ui库中找到扫码icon,以uViewUI为例 绑定点击事件@click 2. 在事件clickScan中处理逻辑 3. 在src文件夹中写一个组件,我定义为w

    2024年02月07日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包