搜索

查看: 3210|回复: 11

[JavaScript] Vue实现用户没有登陆时,访问后自动跳转登录页面的实现思路

[复制链接]
发表于 2023-5-4 11:48:55 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:48:55 3210 11 看全部
目录
  • 设计思路
  • 代码实现
    设计思路
  • 定义路由的时候配置属性,这里使用needLogin标记访问页面是否需要登录
  • 设置路由守卫,每个页面在跳转之前都要经过验证,校验用户信息是否存在,不存在跳转到登录页
  • 用户登录后将用户信息存储在localStorage
  • 退出登录后,将用户信息清空
    代码实现
    1、router文件夹的index.js文件中
  • 在router中每个地址在meta属性中配置needLogin熟悉,判断访问页面是否需要登录
  • 404页面放在最后,匹配所有链接,实现输入不存在的地址时自动跳转404页面
    import Vue from 'vue'
    import Router from 'vue-router'
    import LoginCard from "../components/LoginCard";
    import Home from "../components/Home";
    import ErrorPage from "../components/ErrorPage";
    Vue.use(Router)
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'LoginCard',
          component: LoginCard,
          meta: {
            needLogin: false
          }
        },
        {
          path: '/loginCard',
          name: 'LoginCard',
          component: LoginCard,
          meta: {
            needLogin: false
          }
        },
        {
          path: '/home',
          name: 'Home',
          component: Home,
          meta: {
            needLogin: true
          }
        }, {
          path: '/*',
          name: 'ErrorPage',
          component: ErrorPage,
          meta:{
            needLogin: false
          }
        }
      ]
    })
    2、在main.js中定义一个路由前置守卫,每次跳转页面进行判断,没有登陆自动挑战登陆界面
    import Vue from 'vue'
    import App from './App'
    import router from './router'
    import VueRouter from "vue-router";
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    import * as auth from './utils/auth'
    import store from './store'
    import Vuex from "vuex";
    Vue.config.productionTip = false;
    Vue.use(ElementUI);
    Vue.use(VueRouter);
    Vue.use(Vuex)

    //这个方法需要放在new Vue之前,不然按F5刷新页面不会调用这个方法
    router.beforeEach(function (to, from, next) {
      console.log('是否需要登录才能访问')
      if (to.meta.needLogin) {
        if (auth.getAdminInfo()) {
          console.log(auth.getAdminInfo())
          console.log('有cookie信息')
          next();
        }else {
          console.log('无cookie信息')
          next({
            path:'/loginCard'
          });
        }
      }else{
        next();
      }
    })
    new Vue({
      el: '#app',
      router,
      store,
      components: { App },
      template: ''
    })
    3、编写一个存储数据的工具,使用cookie存储用户登录后的信息
    import Cookies from 'js-cookie'
    const adminInfo = "adminInfo"
    //获取用户信息
    export function getAdminInfo() {
      const admin = Cookies.get(adminInfo)
      if(admin){
        return JSON.parse(admin)
      }
      return ''
    }
    //存储用户信息
    export function setAdminInfo(admin) {
      return Cookies.set(adminInfo, JSON.stringify(admin))
    }
    //移除用户信息
    export function removeAdminInfo() {
      return Cookies.remove(adminInfo)
    }
    4、写一个登录页面,用户登录后就将数据存储在cookie中

      
       
          欢迎登录
          
            
          
          
            
            
          
          
            登陆
            重置
          
       
      


    .login-box {
      border: 1px solid #DCDFE6;
      width: 400px;
      margin: 180px auto;
      padding: 35px 35px 15px 35px;
      border-radius: 5px;
    }
    5、编写一个退出页面,用户退出以后,将用户信息从cookie中去除,跳转到登陆页面

      
        主页面
        退出登录
      

    基本目录结构是这样的

    202302230825441.png

    Vue实现用户没有登陆时,访问后自动跳转登录页面的实现思路1394 作者:Editor 帖子ID:2733 论坛知鸟论坛_zn60.com


    到此这篇关于Vue学习:实现用户没有登陆时,访问后自动跳转登录页面的文章就介绍到这了,更多相关Vue自动跳转登录页面内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛!
  • 发表于 2023-6-28 17:32:44 | 显示全部楼层
    落败的青春阳落s 2023-6-28 17:32:44 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    发表于 2023-6-29 01:32:57 | 显示全部楼层
    知足常乐77 2023-6-29 01:32:57 看全部
    其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
    发表于 2023-6-29 07:21:13 | 显示全部楼层
    惜颜705 2023-6-29 07:21:13 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    发表于 2023-6-29 18:10:55 | 显示全部楼层
    123456819 2023-6-29 18:10:55 看全部
    既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
    发表于 2023-6-29 22:39:48 | 显示全部楼层
    李志敏 2023-6-29 22:39:48 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    发表于 2023-6-29 23:27:43 | 显示全部楼层
    风来时狂放 2023-6-29 23:27:43 看全部
    我看不错噢 谢谢楼主!知鸟论坛越来越好!
    发表于 2023-6-29 23:45:35 | 显示全部楼层
    123456825 2023-6-29 23:45:35 看全部
    楼主太厉害了!楼主,I*老*虎*U!我觉得知鸟论坛真是个好地方!
    发表于 2023-6-30 09:10:29 | 显示全部楼层
    胡37 2023-6-30 09:10:29 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    发表于 2023-6-30 10:01:06 | 显示全部楼层
    贺老师 2023-6-30 10:01:06 看全部
    论坛不能没有像楼主这样的人才啊!我会一直支持知鸟论坛。
    • 您可能感兴趣
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| 小黑屋| 知鸟论坛 |网站地图
    本站资源来自互联网用户收集发布,如有侵权请邮件联系处理。 联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表