在全局路由守卫中使用vuex中的变量

需求:如下图,一个学生管理系统,tea_attendance只能教师访问,学生不能访问,如果是学生访问,则提示无权限。

 

直接使用vuex中的数据是不行的,因为router下的index.js文件并不是当前Vue对象。

解决办法1:在路由跳转的时候传递参数,然后通过beforeRouteEnter获取数据(官方文档:https://router.vuejs.org/zh/guide/advanced/data-fetching.html#%E5%AF%BC%E8%88%AA%E5%AE%8C%E6%88%90%E5%90%8E%E8%8E%B7%E5%8F%96%E6%95%B0%E6%8D%AE),再根据获取到的数据进行判断。该方法理论上是可行的,但是我没有尝试,大家可以自行尝试一下。

解决办法2: 在该文件中我是能过获取token的,我直接解析token判断也行。

 

Vue.js 中,在路由的全局守卫(gaurd)中获取 `node_env` 变量通常涉及到在Vue实例创建前或创建后对环境变量进行访问。Node.js环境中,你可以通过`process.env.NODE_ENV`来获取当前的运行环境,如生产环境、开发环境等。 要在 Vue Router 的全局守卫中获取 `node_env`,你可以按照以下步骤操作: 1. 安装 `axios` 或其他 HTTP 库用于发送异步请求,如果还没有安装的话: ```bash npm install axios ``` 2. 创建一个全局守卫函数,比如在 `router.js` 文件中: ```javascript import Vue from 'vue'; import Router from 'vue-router'; import axios from 'axios'; const router = new Router(); // 创建一个守卫函数,例如 checkEnv router.beforeEach(async (to, from, next) => { try { const nodeEnv = process.env.NODE_ENV; // 获取环境变量 if (nodeEnv === 'production') { // 检查是否为特定环境 // 这里可以发送一个请求到服务器验证环境变量,或者检查本地配置文件 // 如果验证失败,返回错误信息或跳转到相应页面 const envCheckResult = await axios.get('/api/checkEnvironment'); // 假设有个 API 能验证环境 if (!envCheckResult.success) { alert('环境验证失败'); return next({ path: '/error' }); // 自定义错误处理路径 } } next(); // 执行默认流程 } catch (error) { console.error('Error fetching environment:', error); next({ path: '/error' }); } }); export default router; ``` 请注意,这只是一个示例,实际应用中你需要根据实际情况调整请求逻辑。同时,`/api/checkEnvironment` 是假设你有一个API端点,用于验证环境变量。如果你是在客户端直接使用这个变量,那么它应该已经初始化好了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值