使用 WSO2 API 管理器中的范围功能,我可以限制对后端 API 的访问,例如http://mydomain/context/students(GET - 所有学生的列表)、http://mydomain/context/student/S101(GET - 学生 S101 的详细信息)或http://mydomain/context/student/create (POST) 仅适用于分配了特定角色的用户。如此精细的控制,我能够实现。
但我想实现更详细的过滤:用户 U101 只能查看学生 S101 到 S110 的详细信息。因此,应该为他屏蔽http://mydomain/context/student/S111,而http://mydomain/context/students应该只将 S101 的详细信息返回给 S110。我可以在 WSO2 API 管理器中实现这种过滤吗?(我有一个 RDBMS 表(后端的一部分,不在 WSO2 中),其中包含用户到学生列表的映射,允许用户访问其详细信息。)
在 API Manager 中,对响应内容的任何修改都是通过中介脚本完成的。在您的场景中,角色 - 内容映射应存储在 API Manager 中以过滤内容。为此,您可以使用类中介器来过滤响应内容。
在中介中,您必须获得角色 - 内容映射。您可以在类本身中定义它,也可以从数据库中检索它。
请按照文档 [1] 和 [2] 了解如何编写类中介器以及如何使用它。
[1] https://docs.wso2.com/display/EI600/Class+Mediator
[2] https://docs.wso2.com/display/AM210/Adding+Mediation+Extensions
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句