日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

使用vue-router+vuex进行导航守卫(转)

發布時間:2023/12/16 vue 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用vue-router+vuex进行导航守卫(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:想要實現登錄后才能進入主頁等其他頁面,不然都會跳轉到登錄頁。但是Vuex有個不夠完美的地方,一旦刷新頁面就會沒了,所以還要用到localStorage。

一、router.js:

import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' import store from '../store/index' Vue.use(Router); // 懶加載組件 const login = () => import('Components/common/login/index.vue'); const loading = () => import('Components/common/loading/index.vue'); const home = () => import('Pages/home/home.vue'); const user = () => import('Pages/userManage/index.vue'); const addUser = () => import('Pages/userManage/add/index.vue'); const editUser = () => import('Pages/userManage/edit/index.vue'); const menu = () => import('Pages/menuManage/index.vue'); const umbrella = () => import('Pages/umbrellaManage/index.vue'); const location = () => import('Pages/locationManage/index.vue'); const order = () => import('Pages/orderManage/index.vue'); const test = () => import('Pages/test.vue'); const routes = [ // 登錄頁面 { path: '/login', name: "login", component: login, meta: { requiresAuth: false } }, { path: '*', redirect: '/home', name: 'HelloWorld', component: HelloWorld, children: [ // 測試頁面 { path: '/test', component: test, meta: { requiresAuth: true } }, // loading頁面 { path: '/loading', name: "loading", component: loading, meta: { requiresAuth: true } }, // 主頁 { path: '/home', component: home, meta: { requiresAuth: true } }, // 用戶管理 { path: '/user', component: user, meta: { requiresAuth: true } }, { path: '/user/add', name: 'addUser', component: addUser, meta: { requiresAuth: true } }, { path: '/user/edit', name: 'editUser', component: editUser, meta: { requiresAuth: true } }, // 菜單管理 { path: '/menu', name: 'menu', component: menu, meta: { requiresAuth: true } }, // 雨傘管理 { path: '/umbrella', name: 'umbrella', component: umbrella, meta: { requiresAuth: true } }, // 租借點管理 { path: '/location', name: 'location', component: location, meta: { requiresAuth: true } }, // 訂單管理 { path: '/order', name: 'order', component: order, meta: { requiresAuth: true } }, ] } ]; // 頁面刷新時,重新賦值有沒登錄 if (window.localStorage.getItem('isLogin')) { store.commit('setIsLogin', window.localStorage.getItem('isLogin')); } const router = new Router({ routes }); router.beforeEach((to, from, next) => { if (to.matched.some(r => r.meta.requiresAuth)) { // 判斷該路由是否需要登錄權限 console.log(store.getters.isLogin); if (store.getters.isLogin) { // 通過vuex 如果當前有登錄 next(); } else { console.log("沒有登錄吖") next({ path: '/login', query: {redirect: to.fullPath} }) } } else { next(); } }); export default router;
這里有四個需要重點關注的地方(引入和使用就不納入其中了):

1.單獨一個routes數組用來存放路由變量,然后每一個路由對象都需要有個meta參數,里面有個requiresAuth(也可以命其他名),這個就是用來判斷這個頁面需不需要判斷權限,所以login頁面為false,其他頁面都為true。



2.new一個router對象,剛剛在注意點1的數組作為參數,然后最后導出這個router對象給其他頁面引用。
3.要有一個判斷頁面刷新,重新賦值有沒登錄。這個時候判斷localStorage中的isLogin,如果為true,所以刷新前是有登錄的,則提交觸發vuex更改狀態。
4.vue-router提供的鉤子函數,在路由更換的時候,都會觸發這個函數,這個時候就要用到注意點1的meta.requiresAuth,如果即將要進入的頁面需要判斷登錄權限,檢測vuex的isLogin,為true就可以進去,不然都跳轉到登錄頁面。

二、Vuex

文件位置

modules/login.js

const login = {state: {// true為已經登錄,false為沒登錄isLogin: false }, mutations: { setIsLogin(state, isLogin) { state.isLogin = isLogin; } }, actions: { }, } export default login;

getters.js

const getters = {isCollapse: state => state.nav.isCollapse, isLogin: state => state.login.isLogin }; export default getters

index.js

import Vue from 'vue'; import Vuex from 'vuex'; import nav from './modules/nav' import login from './modules/login' // import app from './modules/app'; // import user from './modules/user'; // import menu from './modules/menu'; import getters from './getters'; Vue.use(Vuex); const store = new Vuex.Store({ strict: process.env.NODE_ENV !== 'production', modules: { nav, login // app, // user, // menu }, getters }); export default store

三、實際使用-->登錄

handleSubmit() {this.$refs["loginForm"].validate((valid) => { if (valid) { if(this.loginForm.userName === "admin" && this.loginForm.password === "admin") { this.$notify({ title: '恭喜你', message: '登錄成功!', type: 'success' }); // 觸發setIsLogin方法改變vuex中isLogin的值, this.$store.commit('setIsLogin', true); // 改變localStorage中isLogin的值, window.localStorage.setItem('isLogin', true); // Cookies.set('Token', response.data.token) this.$router.push({path: '/home'}); } else { this.$message({ message: '登錄失敗:密碼錯誤!', type: 'warning' }); } } else { console.log('error submit!!'); return false; } }); },

四、實際使用-->退出登錄

handleCommand(command) {if(command === "exit") {// 觸發setIsLogin方法改變vuex中isLogin的值,this.$store.commit('setIsLogin', false); // 改變localStorage中isLogin的值, window.localStorage.setItem('isLogin', false); this.$notify({ title: '退出登錄成功', message: '請重新登錄', type: 'success' }); this.$router.push({path: '/login'}); } } <el-dropdown @command="handleCommand"><span class="el-dropdown-link"> 歡迎你,{{name}}<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item command="exit">退出登錄</el-dropdown-item> </el-dropdown-menu> </el-dropdown>

作者:Lia代碼豬崽
鏈接:https://www.jianshu.com/p/f920b0e994dc
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。

轉載于:https://www.cnblogs.com/snowhite/p/11277429.html

總結

以上是生活随笔為你收集整理的使用vue-router+vuex进行导航守卫(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品乱人伦一区二区三区 | 亚洲国产av一区二区 | 久草视频在线观 | 免费aa视频 | 好吊色视频一区二区 | 国产91精品久久久久久久 | 动漫精品一区一码二码三码四码 | 色戒电影未测减除版 | 狠狠操综合| www日韩在线观看 | 亚洲国产一二 | 麻豆综合| 久久国产欧美 | 真人真事免费毛片 | 国产伦精品一区二区三区免费视频 | 免费久久一级欧美特大黄 | 中文字幕啪啪 | 久久久精品免费视频 | av免费黄色| 91一区二区视频 | 污视频网站免费看 | 精品国自产拍在线观看 | 日韩精品人妻一区二区三区免费 | 岛国av不卡 | 婷婷色小说 | 可以免费看av的网站 | 二区三区av | 黑人巨大av| 国产欧美一区二区三区鸳鸯浴 | 久久亚洲精品国产精品黑人v | 中文字幕在线一区二区三区 | 91丨国产丨捆绑调教 | 亚洲AV无码精品久久一区二区 | 欧美1314| 欧美肥老妇 | 韩国三级hd两男一女 | 91精品综合久久久久久五月天 | 日本乱轮视频 | 午夜成人亚洲理伦片在线观看 | 免费观看在线视频 | 一区二区的视频 | 91久久精品视频 | 久久成人福利视频 | 高清一区二区三区四区 | 国产又粗又硬视频 | 欧美精品免费一区二区 | 久久精品久久久久久 | 美丽的姑娘观看在线播放 | 欧美亚洲综合在线 | 国产处女| 国产黄色一级 | 污污的视频网站在线观看 | 国产美女主播视频 | 亚洲精品h| 国产精品嫩草久久久久 | 黑人巨茎大战欧美白妇 | 国产成人三级在线观看 | 一本一道久久a久久综合蜜桃 | 伊人免费视频二 | 综合视频一区 | 国产乱码在线观看 | 日本三不卡 | 久久久久久久久97 | 伊人春色在线视频 | 国产一级特黄毛片 | 丝袜 中出 制服 人妻 美腿 | 亚洲国产毛片aaaaa无费看 | 久久久久久久久久久网 | 国产区视频在线 | 中国黄色三级视频 | 男同精品 | 精品九九九九九 | 魔女鞋交玉足榨精调教 | 伊人av影院 | 国产精品一区免费观看 | 国产精品九九 | 毛片毛片女人毛片毛片 | 国产成人久久精品77777综合 | 精品丰满少妇一区二区三区 | 久久免费播放视频 | 午夜伦理影院 | 欧美亚洲欧美 | 中文字幕一区二区三区门四区五区 | 99国产精品一区二区 | 欧美色就是色 | 男女床上拍拍拍 | 青青视频网 | 亚洲一区二区三区国产 | 欧美成人精品一区二区三区在线观看 | 久久国产精品网 | 精品在线视频播放 | 国产一级片免费观看 | 亚洲av无码一区二区二三区 | 久久久久久无码午夜精品直播 | 国产色片 | 一区二区三区四区不卡 | 蜜桃成人在线视频 | 欧美福利电影 | 男操女视频网站 |