コントローラーの Deadbolt 2 で動的アクセス許可を使用して、ユーザーがリソースにアクセスできるかどうかを確認しています。このリソースには ID があり、コントローラーには method がありgetById(String id)
ます。そのように見えます:
@Dynamic("checkAccess")
public CompletionStage<Result> getById(String id) {
//Go get my item from DB
}
Deadbolt のカスタム リソース ハンドラーで、呼び出されたときにメソッドに渡される id 文字列を使用したいと考えています (たとえば、現在のユーザーが ID で指定されたこの特定のアイテムの所有権を持っているかどうかを確認するため)。
ID は少なくとも 2 つの場所に存在します: my URL、ルート パラメーターとして、およびメソッドを呼び出すときの引数として。Dynamic Permission Controller でこの 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年前のことです。それを行うためのよりクリーンな方法を望んでいます。