我在控制器上的 Deadbolt 2 中使用动态权限来检查用户是否有权访问资源。这个资源有一个 ID,在我的控制器中,我有一个方法getById(String id)
。看起来像这样:
@Dynamic("checkAccess")
public CompletionStage<Result> getById(String id) {
//Go get my item from DB
}
在我在 Deadbolt 中的自定义资源处理程序中,我想使用在调用时传递给方法的 id 字符串(例如,检查当前用户是否拥有由 ID 指定的这个特定项目的所有权)。
ID 至少出现在两个地方:我的 URL,作为路由参数,以及在调用方法时作为参数。如何在我的动态权限控制器中访问此 ID:
HANDLERS.put("checkAccess", Optional.of(new AbstractDynamicResourceHandler() {
public CompletionStage<Boolean> isAllowed(final String name, final Optional<String> meta,
final DeadboltHandler deadboltHandler, final Http.Context context) {
Logger.debug("*** Custom permission test");
//HERE - Do something with the ID
return CompletableFuture.completedFuture(Boolean.FALSE);
}
}));
我在这里发现了一些关于这个问题的东西,但它很老套,而且是 6 年前的事了,我有点希望有一种更清洁的方法来做到这一点。