当前位置: 代码网 > it编程>编程语言>Javascript > vue3配置permission.js和router、pinia实现路由拦截的简单步骤

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

2024年11月25日 Javascript 我要评论
场景网站中,通常用户登录后后端返回token给前端,前端存储在本地并且在每次发送请求时携带,如果用户未登录(没有token)就想访问网站内部的网页,我们就需要做对应拦截。配置pinia首先命令行下载p

场景

网站中,通常用户登录后后端返回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实现路由拦截内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com