2015-12-02 102 views
1

我在我的页面上使用REST api并进行身份验证我使用播放会话。播放框架路由参数授权

问题是与授权,我有几十端点看起来像这样:

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

我可以添加并在每个控制器方法if语句来检查用户是否有权限到财产 ,但我可以在全球范围内处理它吗?

我发现这个模块,但它似乎没有处理参数,只是检查用户是否在某个组/角色与否。 https://www.playframework.com/documentation/1.0.2.1/secure

+0

你没有提到你使用的是什么版本的游戏的 – Gus

+0

@Gus是2.3作为标签 – Jaanus

回答

1

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

+0

很好地工作。不得不升级到2.4,但嘿,为什么不呢。 – Jaanus

0

您可以使用Security.Authenticated注释作为详细的here。对于更具体的权限,我推荐Deadbolt

+0

我看到了让我可以使用角色和组,但我怎么做基础的授权在路线参数? – Jaanus

+0

它没有。我一直在做的方式是在每个控制器方法中处理它。我想可以使用自定义操作注释(https://www.playframework.com/documentation/2.3.x/JavaActionsComposition#Defining-custom-action- annotations),但我没有尝试过。 – Gus