Spring Web предоставляет следующий интерфейс
public interface RequestMatcher {
boolean matches(HttpServletRequest request);
}
и Spring Security, вы можете настроить его, используя
http
.authorizeRequests()
.requestMatchers(new MyMatcher(db), someOtherMatcher)
.fullyAuthenticated()
Как вы реализуете мой подход, зависит только от вас.Это может быть
public class MyMatcher implements RequestMatcher {
@Override
public boolean matches(HttpServletRequest request) {
String antPatternFromDB = db.getAntPattern(request);
return new AntPathRequestMatcher(antPatternFromDB).matches(request);
}
}
Предполагается, что db
является компонентом с доступом к БД.
@Bean
public Db db() {
return new Db(DriverManager.getConnection("jdbc:h2:~/test", "sa", ""));
}
Обратите внимание: вместо DriverManager.getConnection
следуетиспользуйте пул соединений .Я считаю, что это выходит за рамки этого ответа.