#tomcat7 #spring-boot #embedded-tomcat-7
#tomcat7 #spring-boot #встроенный-tomcat-7
Вопрос:
Как установить пользовательскую область для встроенного tomcat? я использую SpringBoot, однако не вижу способа добавить пользовательскую область через Embeddedservletcontainercustomizer.
Ответ №1:
Похоже, вы должны определить этот компонент:
@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addContextCustomizers(new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
context.setRealm(new CombinedRealm());
}
});
return factory;
}
И предоставьте желаемую Realm
реализацию.
Комментарии:
1. большое спасибо за это, это решило проблему, я вижу, что valve инициализируется в журналах. однако мои запросы полностью обходят valve. есть идеи, почему бы сначала не пройти через valve? нужно ли нам делать дополнительную конфигурацию из web.xml связано с <security-constrain>/<security-role> ?
2. Верно. Вы можете сделать это через
ServletContextInitializer
компонент и предоставитьServletContext.declareRoles
. Я думаю…3. Как насчет добавления метода customize() выше? SecurityConstraint sc = new SecurityConstraint(); //добавить конфигурацию здесь context.addConstraint( sc); context.addSecurityRole(«all_auth_users»);
4. В идеале он должен перенаправить запрос на нашу централизованную форму веб-аутентификации, и после проверки подлинности он обработает запрос. Однако похоже, что запрос напрямую попадает в сервлет диспетчера, а затем в контроллер, хотя я вижу в журналах 2014-06-26 14:47:51.528 INFO 4048 — [ost-StartStop-1]: GSAuthNAuthenticator (gsauthn-j версии 4.1.1) успешно запущен. Есть еще мысли?