You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Strapi用户权限插件添加中间件?添加后未生效

Strapi用户权限插件中自定义路由中间件未生效问题

尝试给Strapi的user-permissions插件里的/api/users接口添加自定义中间件,但中间件始终未被调用。当前路由配置代码如下:

{
  method: "GET",
  path: '/users',
  handler: 'user.find',
  config: {
    middlewares: [
      (ctx, next) => {
        console.log('not working')
        return next();
      },
    ],
  }
}

已在user-permission-details中配置该接口的上述中间件,但完全没效果,问题出在中间件未被调用,且路由配置没有在module.exports中正确定义。


问题根源

  1. Strapi的路由配置必须通过module.exports导出,否则框架无法识别加载你的自定义路由规则。
  2. 直接在路由数组里写匿名函数中间件,在部分Strapi版本中可能存在解析问题,更推荐先定义独立中间件再引用。

修复步骤

1. 正确导出路由配置

将你的路由配置放在module.exports的数组中(通常文件路径为extensions/user-permissions/config/routes.js):

module.exports = [
  {
    method: "GET",
    path: '/users',
    handler: 'user.find',
    config: {
      middlewares: [
        (ctx, next) => {
          console.log('middleware working!')
          return next();
        },
      ],
    }
  },
  // 保留插件原有的其他路由配置(如果需要)
];

2. (可选)使用独立中间件文件

如果匿名函数写法仍不生效,可以先创建自定义中间件:

  • 在extensions/user-permissions/middlewares目录下新建custom-log.js:
module.exports = (ctx, next) => {
  console.log('custom middleware triggered!');
  return next();
};
  • 然后在路由配置中引用:
module.exports = [
  {
    method: "GET",
    path: '/users',
    handler: 'user.find',
    config: {
      middlewares: [
        'plugins::user-permissions.custom-log'
      ],
    }
  },
];

额外注意事项

  • 修改路由配置后必须重启Strapi服务,否则新配置不会加载。
  • 确认你修改的是正确的路由文件:如果是扩展官方user-permissions插件,路由文件路径应为extensions/user-permissions/config/routes.js,而非项目根目录的config/routes.js。
  • 检查是否有其他路由规则优先级更高,覆盖了你的自定义配置。

内容的提问来源于stack exchange,提问作者amalp12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:10:29