私は、ショーケースの実装から派生したSpring Java Configurationに基づくSpring MVCでHDIVを使用しています。設定が読み込まれますが、保護されたURL、つまり「/ messages/message」にアクセスしようとすると、常に不正アクセスエラーHDIV_PARAMETER_DOES_NOT_EXISTが発生します。 HDIV処理からURLを除外するように設定を変更すると動作しますが、これはもちろんオプションではありません。HDIV + Spring MVC - 常に不正アクセスエラーを取得するHDIV_PARAMETER_DOES_NOT_EXIST
誰かが私が逃したアイデアですか?
ログファイルのエラー文の
10:04:17.304 [http-nio-8080-exec-22] INFO org.hdiv.logs.Logger - HDIV_PARAMETER_DOES_NOT_EXIST;/spring-security-example/messages/message;_HDIV_STATE_;;;127.0.0.1;127.0.0.1;megloff;
Javaの設定
@Configuration
@EnableHdivWebSecurity
public class HdivSecurityConfig extends HdivWebSecurityConfigurerAdapter {
@Override
public void configure(SecurityConfigBuilder builder) {
}
@Override
public void addExclusions(ExclusionRegistry registry) {
registry.addUrlExclusions("/").method("GET");
registry.addUrlExclusions("/login");
registry.addUrlExclusions("/logout");
registry.addUrlExclusions("/static/.*");
registry.addParamExclusions("_csrf");
// registry.addUrlExclusions("/messages/.*"); <-- would allow access, but not an option
}
@Override
public void configureEditableValidation(ValidationConfigurer validationConfigurer) {
validationConfigurer.addValidation("/messages/.*");
validationConfigurer.addValidation("/addUser");
}
}
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {
"ch.megloff.spring.security.example.mvc.controller",
"ch.megloff.spring.security.example.mvc.action",
"ch.megloff.spring.security.example.repository",
"ch.megloff.spring.security.example.listener",
"ch.megloff.spring.security.example.service"})
public class SpringMVCConfiguration extends WebMvcConfigurerAdapter {
@Autowired
@Qualifier("hdivEditableValidator")
private Validator hdivEditableValidator;
@Override
public Validator getValidator() {
return hdivEditableValidator;
}
...
}
public class SpringWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SpringMVCConfiguration.class, SpringHibernateConfig.class, SpringSecurityConfiguration.class, SpringSecurityJDBCConfiguration.class, SpringWebFlowConfig.class, HdivSecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { SpringMVCConfiguration.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
public void onStartup(ServletContext container) throws ServletException {
super.onStartup(container);
container.addFilter("ValidatorFilter", ValidatorFilter.class).addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST), false, "/*");
container.addListener(new InitListener());
}
}