欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3配置permission.js和router、pinia實現(xiàn)路由攔截的簡單步驟

 更新時間:2024年11月19日 11:09:36   作者:劍亦未配妥  
這篇文章主要介紹了如何在場景網(wǎng)站中實現(xiàn)對未登錄用戶訪問的攔截,通過配置Pinia,創(chuàng)建一個user.js文件來存儲用戶數(shù)據(jù),并在main.js中進行配置,同時通過在router目錄下創(chuàng)建permission.js文件,可以實現(xiàn)對未登錄用戶的攔截,需要的朋友可以參考下

場景

網(wǎng)站中,通常用戶登錄后后端返回token給前端,前端存儲在本地并且在每次發(fā)送請求時攜帶,如果用戶未登錄(沒有token)就想訪問網(wǎng)站內(nèi)部的網(wǎng)頁,我們就需要做對應(yīng)攔截。

配置Pinia

首先命令行下載pinia

pnpm install pinia

src中新建一個stores目錄,其中根據(jù)自己的需要進行編寫,推薦如下的目錄結(jié)構(gòu)

在這里插入圖片描述

其中user.js就是存放自己需要存儲化的數(shù)據(jù)(名字可以自定義),而index.js是為了統(tǒng)一導(dǎo)出pinia

//index.js
import { createPinia } from 'pinia'
import persist from 'pinia-plugin-persistedstate'

// 創(chuàng)建 pinia 實例
const pinia = createPinia()
// 使用持久化存儲插件
pinia.use(persist)

// 默認導(dǎo)出,給 main.js 使用
export default pinia

// 模塊統(tǒng)一導(dǎo)出
export * from './modules/member'

user.js中(示例)

import { defineStore } from 'pinia'
import { ref } from 'vue'

//用戶模塊 token setToken removeToken
export const useUserStore = defineStore(
  'useMemberStore',
  () => {
    //用戶信息
    const userInfo = ref({})

    const setUserInfo = (data) => {
      userInfo.value = data
    }
    //退出登錄時
    const removeUserInfo = () => {
      userInfo.value = {}
    }

    return {
      userInfo,
      setUserInfo,
      removeUserInfo
    }
  },
  {
    persist: true
  }
)

main.js文件中同樣需要進行配置

// 注冊持久化插件
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'

const app = createApp(App)
const pinia = createPinia()
// 注冊持久化插件
pinia.use(piniaPluginPersistedstate)
app.use(pinia)

配置permission.js

router的配置就不再過多介紹了,很簡單,在router文件夾中新建一個permission.js文件,其中如下內(nèi)容

import router from './index' // 引入主路由模塊
import { useUserStore } from '@/stores/modules/user'//pinia持久化的信息

const whiteList = ['/login'] // 不需要鑒權(quán)的路由白名單

router.beforeEach(async (to, from, next) => { 
  //useUserStore需要根據(jù)你實際定義的Pinia來
  const userStore = useUserStore()
  // 如果用戶已經(jīng)登錄,則直接放行
  if (userStore.userInfo.token) {
    next()
    return
  }

  // 如果用戶未登錄并且目標路由不在白名單中
  if (!userStore.userInfo.toke && !whiteList.includes(to.path)) {
    // 重定向到登錄頁
    next(`/login?redirect=${to.path}`)
  } else {
    // 目標路由在白名單中,直接放行
    next()
  }
})

export default router

main.js中記得引入

import '@/router/permission.js'

現(xiàn)在就可以實現(xiàn)對未登錄(沒有token)的用戶訪問進行攔截了

總結(jié)

到此這篇關(guān)于vue3配置permission.js和router、pinia實現(xiàn)路由攔截的文章就介紹到這了,更多相關(guān)vue3實現(xiàn)路由攔截內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue?事件中的?.native你搞明白了嗎

    Vue?事件中的?.native你搞明白了嗎

    .native主要是給自定義的組件添加原生事件,可以理解為該修飾符的作用就是把一個vue組件轉(zhuǎn)化為一個普通的HTML標簽,并且該修飾符對普通HTML標簽是沒有任何作用的,這篇文章主要介紹了vue?事件中的?.native你搞清楚了嗎,需要的朋友可以參考下
    2023-02-02
  • vue-router跳轉(zhuǎn)時打開新頁面的兩種方法

    vue-router跳轉(zhuǎn)時打開新頁面的兩種方法

    這篇文章主要給大家介紹了關(guān)于vue-router跳轉(zhuǎn)時打開新頁面的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用vue-router具有一定的參考學(xué)習價值,需要的朋友們下面來一起學(xué)習學(xué)習吧
    2019-07-07
  • vue 單元測試初探

    vue 單元測試初探

    這篇文章主要介紹了vue 單元測試的相關(guān)資料,幫助大家更好的理解和學(xué)習使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • vue之el-tree懶加載數(shù)據(jù)并且實現(xiàn)樹的過濾問題

    vue之el-tree懶加載數(shù)據(jù)并且實現(xiàn)樹的過濾問題

    這篇文章主要介紹了vue之el-tree懶加載數(shù)據(jù)并且實現(xiàn)樹的過濾問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vite+vue3全局定義less變量在單文件中使用方式

    vite+vue3全局定義less變量在單文件中使用方式

    這篇文章主要介紹了vite+vue3全局定義less變量在單文件中使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue + Webpack + Vue-loader學(xué)習教程之相關(guān)配置篇

    Vue + Webpack + Vue-loader學(xué)習教程之相關(guān)配置篇

    這篇文章主要介紹了關(guān)于Vue + Webpack + Vue-loader的相關(guān)配置篇,文中通過示例代碼介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • vue單頁面如何通過prerender-spa-plugin插件進行SEO優(yōu)化

    vue單頁面如何通過prerender-spa-plugin插件進行SEO優(yōu)化

    這篇文章主要介紹了vue單頁面如何通過prerender-spa-plugin插件進行SEO優(yōu)化,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue-cli啟動本地服務(wù)局域網(wǎng)不能訪問的原因分析

    vue-cli啟動本地服務(wù)局域網(wǎng)不能訪問的原因分析

    這篇文章主要介紹了vue-cli啟動本地服務(wù),局域網(wǎng)下訪問不到的原因分析,在文中還給大家介紹了vue-cli起的webpack項目 用localhost可以訪問,但是切換到ip就不可以訪問 的原因,本文給大家介紹的非常詳細,需要的朋友參考下
    2018-01-01
  • vue進行下載與處理二進制流文件的方法詳解

    vue進行下載與處理二進制流文件的方法詳解

    這篇文章主要為大家詳細介紹了vue如何實現(xiàn)將后端返回的二進制流進行處理并實現(xiàn)下載,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習一下
    2023-12-12
  • vue.js集成echarts時遇到的一些問題總結(jié)

    vue.js集成echarts時遇到的一些問題總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于vue.js集成echarts遇到的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-04-04

最新評論