Я использую динамическое разрешение в Deadbolt 2 на моем контроллере, чтобы проверить, есть ли у пользователя доступ к ресурсу или нет.Этот ресурс имеет идентификатор, и в моем контроллере у меня есть метод getById(String id)
.Выглядит так:
@Dynamic("checkAccess")
public CompletionStage<Result> getById(String id) {
//Go get my item from DB
}
В моем пользовательском обработчике ресурсов в Deadbolt я хотел бы использовать строку id, передаваемую методу при вызове (например, чтобы проверить, есть ли у текущего пользователя право собственности).этого конкретного элемента, обозначенного идентификатором).
Идентификатор присутствует как минимум в двух местах: мой URL-адрес, как параметр маршрута и как аргумент при вызове метода.Как я могу получить доступ к этому идентификатору в моем контроллере динамических разрешений:
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 лет назад, я как бынадеясь на более чистый способ сделать это.