Play框架路由参数授权

Play framework route parameter authorization

我的页面上有 REST api,我使用 Play 会话进行身份验证。

授权有问题,我有几十个这样的端点:

GET          /api/domains/:domainId/properties/:propertyId/reports   

我可以在每个控制器方法上添加 if 语句来检查用户是否有权访问 domain属性,但我能以某种方式在全球范围内处理它吗?

我找到了这个模块,但它似乎不处理 参数 ,只是检查用户是否在某些 group/role 中。 https://www.playframework.com/documentation/1.0.2.1/secure

您可以使用 Security.Authenticated 注释 here. For more specific permissions, I recommend Deadbolt

我使用自定义 RequestHandler 解决了这个问题。您可以在那里从路径中提取参数并验证它们。 (在 scala 中我什至可以修改请求路由以避免在所有路由中重复这些参数,我不知道你是否也可以在 java 中这样做)。 (看: https://www.playframework.com/documentation/2.4.x/JavaHttpRequestHandlers)