s***@qq.com
s***@qq.com
  • 发布:2022-11-13 08:24
  • 更新:2022-11-15 17:38
  • 阅读:392

uni-cloud-router 路由执行前与后,调用中间件应该如何写呢

分类:uniCloud

看说明文档上,可以让中间件在路由函数执行前,或执行后调用

请问如何在配置中间件函数,在某个路由调用前,或者调用后执行呢?

2022-11-13 08:24 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

看到那个next了吗?next表示执行下一个中间件或者service,在next之前/之后写代码就会在路由之前/之后执行

  • s***@qq.com (作者)

    谢谢回复

    我想问的是 next 的中间件是怎么配置的,uni的中间件与koa写的方式好像不一样,是通过config配置


    const auth = require('./middleware/auth.js') // 引入 auth 中间件

    module.exports = {

    debug: true, // 调试模式时,将返回 stack 错误堆栈

    baseDir: __dirname, // 指定应用根目录

    middleware: [

    [

    //数组格式,第一个元素为中间件,第二个元素为中间件生效规则配置

    auth(), // 注册中间件

    { enable: true, ignore: /\/login$/ }, // 配置当前中间件生效规则,该规则表示以/login结尾的路由不会执行 auth 中间件校验 token

    ],

    ],

    }


    官方的配置那个示例,我理解是:

    auth中间件是在所有路由执行 “ 之前 ” 执行,当遇到 login 结尾的路由不执行


    我想知道的是,比如我想在路由执行完 “ 之后 ” 执行的中间,也就是调的那个next 中间件,

    在config 文档中如何配置。

    2022-11-15 15:52

  • DCloud_uniCloud_WYQ

    回复 s***@qq.com: 中间件的执行也是按照这个中间件数组的顺序的,如果在auth和路由之间再加一层的话写在auth后面就行

    2022-11-15 16:03

  • s***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 我是想在路由执行之后,再执行一个中间件。是再声明一个中间件,然后不写路由?


    比如:首先执行 auth ,然后再执行路由,在路由里调next,再执行一个名叫clear的中间件


    前端小白,还请大佬明示,或是能给个示例么,万分感激~~

    2022-11-15 16:41

  • DCloud_uniCloud_WYQ

    回复 s***@qq.com:


    // middlerware/clear.js  
    module.exports = function() {
    return async function(ctx, next) {
    await next()
    console.log('clear')
    }
    }

    2022-11-15 17:25

s***@qq.com

s***@qq.com (作者)

回复 DCloud_uniCloud_WYQ:

感谢大佬一直的回复,可能是我没说清楚

我主要是不知道怎么在config.js里怎么配置声明 在 路由执行完以后 的某个中间件

const auth = require('./middleware/auth.js') // 引入 auth 中间件  
const auth = require('./middleware/clear.js') // 引入 clear 中间件  
module.exports = {  
  debug: true, // 调试模式时,将返回 stack 错误堆栈  
  baseDir: __dirname, // 指定应用根目录  
  middleware: [  
    [  
      //数组格式,第一个元素为中间件,第二个元素为中间件生效规则配置  
      auth(), // 注册中间件  
      { enable: true, ignore: /\/login$/ }, // 配置当前中间件生效规则,该规则表示以`/login`结尾的路由不会执行 auth 中间件校验 token  
    ],  
    [   
      clear() //  ========!!!==== 如果我想在路由执行完以后,再执行clear中间件,是写在这里吗?======!!!!======  
    ],  

  ],  
}
  • DCloud_uniCloud_WYQ

    config里面只是配置使用哪些中间件,执行顺序是有中间件里面next方法的调用时机决定的,就用你这个配置,用我上面的clear中间件,你执行以下就明白了

    2022-11-15 17:41

  • s***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 好的,谢谢

    2022-11-15 18:03

该问题目前已经被锁定, 无法添加新回复