Strapi V4自定义插件路由无法通过API Token访问的解决方法咨询
解决Strapi V4自定义插件路由API Token验证问题
要让自定义插件的路由被API Token权限系统识别,需要完成以下几个关键配置步骤:
1. 给路由添加API Token认证策略
在src/plugins/{plugin_id}/server/routes/index.js中,为目标路由配置正确的auth策略和权限关联,示例如下:
module.exports = { routes: [ { method: 'GET', path: '/your-custom-endpoint', handler: 'your-controller.your-action', config: { auth: { strategy: 'api-token', // 指定使用API Token认证 }, // 关联后续要注册的权限规则 policies: ['plugin::your-plugin.access-custom-endpoint'], }, }, ], };
2. 在插件中注册权限条目
新建src/plugins/{plugin_id}/server/permissions/index.js文件,注册自定义权限,让Strapi将其加入API Token的可选权限列表:
module.exports = { register({ strapi }) { // 定义权限动作,可根据需要添加多个 const actions = [ { section: 'plugins', // 权限归类到插件分组 displayName: '访问自定义端点', // 在后台显示的权限名称 uid: 'your-plugin.access-custom-endpoint', // 权限唯一标识,要和路由policies里的一致 pluginName: 'your-plugin', // 你的插件ID }, ]; // 注册所有权限动作 actions.forEach((action) => { strapi.admin.services.permission.actionProvider.register(action); }); }, };
3. 重启Strapi并配置API Token
- 重启Strapi服务,让新的权限配置生效
- 进入后台生成API Token时,在「插件」分类下就能看到你注册的权限,勾选对应的权限后生成Token
- 使用该Token访问自定义路由,即可正常通过API Token验证
注意事项
- 确保
pluginName和路由中plugin::your-plugin的your-plugin完全匹配插件实际ID - 不同的路由/操作可以注册不同的权限条目,实现更精细的权限控制
内容的提问来源于stack exchange,提问作者Drashti Kheni
相关产品推荐
相关产品推荐

