Strapi v4如何替代v3的sanitizeEntity实现用户敏感字段过滤
Strapi v4 已将原sanitizeEntity功能重构至@strapi/utils包的sanitize模块下,你可以按以下方式实现同等的敏感字段清洗效果:
完整实现代码
const { sanitize } = require('@strapi/utils'); module.exports = { currentUser: async(ctx, next) => { let user = ctx.state.user; // 获取用户模型的Schema定义 const userSchema = strapi.contentTypes['plugin::users-permissions.user']; // 清洗用户数据,移除敏感字段 const sanitizedUser = await sanitize.contentAPI.output(user, { schema: userSchema }); return sanitizedUser; } }
注意事项
sanitize.contentAPI.output是异步方法,必须添加await调用,否则会返回Promise对象而非清洗后的数据- 该方法默认会按照用户模型的字段权限配置,自动过滤密码、重置令牌、角色权限等敏感字段,行为逻辑与v3版本的
sanitizeEntity完全一致 - 如果需要自定义过滤规则,可在第二个参数中添加
includeFields/excludeFields配置,手动指定需要保留或移除的字段
内容的提问来源于stack exchange,提问作者derelektrischemoench
相关产品推荐
相关产品推荐

