vue3配置permission.js和router、pinia实现路由拦截的简单步骤

 更新时间:2024年11月19日 11:09:36   作者:剑亦未配妥  
这篇文章主要介绍了如何在场景网站中实现对未登录用户访问的拦截,通过配置Pinia,创建一个user.js文件来存储用户数据,并在main.js中进行配置,同时通过在router目录下创建permission.js文件,可以实现对未登录用户的拦截,需要的朋友可以参考下

场景

网站中,通常用户登录后后端返回token给前端,前端存储在本地并且在每次发送请求时携带,如果用户未登录(没有token)就想访问网站内部的网页,我们就需要做对应拦截。

配置Pinia

首先命令行下载pinia

pnpm install pinia

src中新建一个stores目录,其中根据自己的需要进行编写,推荐如下的目录结构

在这里插入图片描述

其中user.js就是存放自己需要存储化的数据(名字可以自定义),而index.js是为了统一导出pinia

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

// 创建 pinia 实例
const pinia = createPinia()
// 使用持久化存储插件
pinia.use(persist)

// 默认导出,给 main.js 使用
export default pinia

// 模块统一导出
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文件,其中如下内容

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

const whiteList = ['/login'] // 不需要鉴权的路由白名单

router.beforeEach(async (to, from, next) => { 
  //useUserStore需要根据你实际定义的Pinia来
  const userStore = useUserStore()
  // 如果用户已经登录,则直接放行
  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'

现在就可以实现对未登录(没有token)的用户访问进行拦截了

总结

到此这篇关于vue3配置permission.js和router、pinia实现路由拦截的文章就介绍到这了,更多相关vue3实现路由拦截内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

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

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

    .native主要是给自定义的组件添加原生事件,可以理解为该修饰符的作用就是把一个vue组件转化为一个普通的HTML标签,并且该修饰符对普通HTML标签是没有任何作用的,这篇文章主要介绍了vue 事件中的 .native你搞清楚了吗,需要的朋友可以参考下
    2023-02-02
  • vue-router跳转时打开新页面的两种方法

    vue-router跳转时打开新页面的两种方法

    这篇文章主要给大家介绍了关于vue-router跳转时打开新页面的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用vue-router具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • vue 单元测试初探

    vue 单元测试初探

    这篇文章主要介绍了vue 单元测试的相关资料,帮助大家更好的理解和学习使用vue框架,感兴趣的朋友可以了解下
    2021-04-04
  • vue之el-tree懒加载数据并且实现树的过滤问题

    vue之el-tree懒加载数据并且实现树的过滤问题

    这篇文章主要介绍了vue之el-tree懒加载数据并且实现树的过滤问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vite+vue3全局定义less变量在单文件中使用方式

    vite+vue3全局定义less变量在单文件中使用方式

    这篇文章主要介绍了vite+vue3全局定义less变量在单文件中使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue + Webpack + Vue-loader学习教程之相关配置篇

    Vue + Webpack + Vue-loader学习教程之相关配置篇

    这篇文章主要介绍了关于Vue + Webpack + Vue-loader的相关配置篇,文中通过示例代码介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • vue单页面如何通过prerender-spa-plugin插件进行SEO优化

    vue单页面如何通过prerender-spa-plugin插件进行SEO优化

    这篇文章主要介绍了vue单页面如何通过prerender-spa-plugin插件进行SEO优化,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • vue-cli启动本地服务局域网不能访问的原因分析

    vue-cli启动本地服务局域网不能访问的原因分析

    这篇文章主要介绍了vue-cli启动本地服务,局域网下访问不到的原因分析,在文中还给大家介绍了vue-cli起的webpack项目 用localhost可以访问,但是切换到ip就不可以访问 的原因,本文给大家介绍的非常详细,需要的朋友参考下
    2018-01-01
  • vue进行下载与处理二进制流文件的方法详解

    vue进行下载与处理二进制流文件的方法详解

    这篇文章主要为大家详细介绍了vue如何实现将后端返回的二进制流进行处理并实现下载,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • vue.js集成echarts时遇到的一些问题总结

    vue.js集成echarts时遇到的一些问题总结

    这篇文章主要给大家总结介绍了关于vue.js集成echarts遇到的一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论