zoukankan      html  css  js  c++  java
  • 从跳转登陆再返回到原地址

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
    </head>
    <body>
      <!-- 
        login?ReturnUrl=https://vip.jd.com/home.html
        login?ReturnUrl=https://order.jd.com/center/list.action
      -->
      <div id="app">
        <router-view></router-view>
      </div>
      <script src="../vue.js"></script>
      <script src="../vue-router.js"></script>
      <script>
        
        const Index = {
          template: `
            <div>
              <h3>首页</h3>
              <router-link to="/login">登录</router-link>          
              <router-link to="/order">我的订单</router-link>
              <router-link to="/user">个人中心</router-link>
              <router-link to="/vip">会员中心</router-link>
            </div>
          `
        }
    
        const Order = {
          template: `
            <div>我的订单</div>
          `
        }
    
        const User = {
          template: `
            <div>个人中心</div>
          `
        }
    
        const Vip = {
          template: `
            <div>会员中心</div>
          `
        }
    
        const Login = {
          template: `
            <div>登录
              <button @click="login">登录</button>
              </div>
          `,
          methods: {
            login () {
              localStorage.setItem('ticket', 1)
              // 要根据当前url中的query参数 returnURL进行路由的跳转
              const url = this.$route.query.returnURL
              // console.log(url)
              // 利用js实现页面的跳转操作
              this.$router.push(url)
            }
          }
        }
        const routes = [
          {
            path: '/',
            component: Index
          }, {
            path: '/order',
            component: Order,
            meta: {
              auth: true
            }
          }, {
            path: '/user',
            component: User,
            meta: {
              auth: true
            }
          }, {
            path: '/vip',
            component: Vip,
            meta: {
              auth: true
            }
          }, {
            path: '/login',
            component: Login
          }
        ]
    
        const router = new VueRouter({
          routes
        })
    
        // 设置导航守卫
        router.beforeEach((to, from, next) => {
          // 判断路由对象中的matched是否有一个对象包含meta
          if (to.matched.some(route => route.meta.auth)) {
            if (localStorage.getItem('ticket')) {
              next()
            }else {
              next('/login?returnURL=' + to.path) // 跳转时需要在url后添加一个query参数,参数值为要返回的url路径
            }
          } else {
            next()
          }
        })
    
        const app = new Vue({
          el: '#app',
          router
        })
      
      </script>
    </body>
    </html>
  • 相关阅读:
    python学习day7
    python学习day4
    python 学习day6(面向对象)
    python 学习day5(模块)
    python学习之正则表达式
    python作业day4计算器
    python作业day3修改配置文件
    Python作业day2购物车
    python学习day2(二)
    操作系统 银行家算法
  • 原文地址:https://www.cnblogs.com/bao2333/p/10170681.html
Copyright © 2011-2022 走看看