1)我在trapijs中建立了个人资料信息内容类型。添加了用户关系。个人资料具有并属于一个用户。”就像一个简单的社交媒体。
2)我添加了几个用户/个人资料信息。为特殊用户连接了它。
3)与邮递员一起测试过api。身份验证有效,我可以看到配置文件信息。但是问题是,经过身份验证的用户可以访问其他用户的个人资料信息。
如何限制一个用户仅查看相关个人资料? 谢谢
答案 0 :(得分:0)
好的,因此对于您的用例,您必须将GET /users/
限制为所有用户。
这样一来,没有人可以访问其他数据用户。
但是您可以访问GET /users/me/
路线。并且您将能够访问Auth User数据。
答案 1 :(得分:0)
您可以轻松创建自定义策略,该策略将比较经过身份验证的user.id和请求的配置文件用户ID,并且仅在它们相同时才进行响应-在此处了解有关创建策略的信息-Strapi Policy Help
module.exports = async (ctx, next) => {
const { body } = ctx.request
if (ctx.state.user.id == ctx.request.query.userid || ctx.state.user.id == body.userid) {
return await next();
}
ctx.unauthorized(`You're not allowed to perform this action!`);
};
请注意,您必须在概要文件模型中插入userid字段。我必须使用逻辑OR,因为我有不同类型的请求-仅取决于您的请求。