Могу ли я отправить аннотацию Java на уровне метода, в методе контроллера MVC запрос http в качестве параметра? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть стандартное веб-приложение Spring MVC, и я хочу добавить пользовательскую аннотацию, которая принимает параметр, и запрос HttpRequest.

Теперь я знаю, что параметры аннотаций разрешаются во время компиляции, но как Spring Security получает доступ к сеансу, пользователю и прочему с помощью @PreAuth и прочее ...

Я специально ищуполучить HttpRequest.

Идеи, как обойти это?

1 Ответ

0 голосов
/ 08 октября 2019

U должен реализовать PermissionEvaluator.

public class CustomPermissionEvaluator implements PermissionEvaluator {


public boolean hasPermission(Authentication authentication, Object target,
        Object permission) {

        return // you logic;
}


public boolean hasPermission(Authentication authentication, Serializable targetId,String targetType, Object permission) {
        return // you logic;

}

}

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {

@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
    DefaultMethodSecurityExpressionHandler expressionHandler = 
      new DefaultMethodSecurityExpressionHandler();
    expressionHandler.setPermissionEvaluator(new CustomPermissionEvaluator());
    return expressionHandler;
}



@PreAuthorize("hasPermission(#foo, 'YOU_CUSTOM_PARAM')")
@PostMapping(value = "/pay")
public Foo create(Foo foo) {
    return foo;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...