Я использую весенний ботинок и угловой в переднем конце. Иногда я хочу перенаправить непосредственно из службы. Мы используем только файлы .html, .css и script (нет .jsp).не удается найти html-страницы с пружинным ботинком
Это return "static/pages/savepassword.html";
как я попытался перенаправить savepassword
Так 1-ый вопрос, как я могу переадресовать правильно в этом случае?
Далее, Spring не находит мои html-файлы. Я имею такую структуру
Я прочитал, что пружина должна найти все статические файлы в «статические» автоматически, но это не так. Так что я пытался настроить мой ViewControllerRegistry и RessourceControllerRegistry
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
registry.addResourceHandler("/static/**").addResourceLocations("/static/");
// registry.addResourceHandler("/stylesheets/**").addResourceLocations("/stylesheets/");
// registry.addResourceHandler("/scripts/**").addResourceLocations("/scripts/");
// registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
registry.addViewController("/savePassword").setViewName("static/pages/savePassword.html");
registry.addViewController("/login").setViewName("static/pages/login.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
Когда я называю «статические/страницы/login.html» напрямую, она работает. Когда я хочу позвонить «/ login», он говорит 404. 2-й вопрос: что мне нужно настроить, а что нет?
ДОПОЛНЕНО-1: Spring Security
http
.authorizeRequests().antMatchers("/login", "/logout", "/user/**").permitAll()
.anyRequest().authenticated()
.and()
.exceptionHandling()
.accessDeniedHandler(new CustomAccessDeniedHandler())
.authenticationEntryPoint(new CustomAuthenticationEntryPoint())
.and()
.requiresChannel()
.anyRequest().requiresSecure()
.and()
.csrf()
.disable()
//.csrfTokenRepository(csrfTokenRepository())
.addFilterBefore(new MDCFilter(), ExceptionTranslationFilter.class)
// .addFilterBefore(new CorsFilter(),// ChannelProcessingFilter.class)
//.addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
.formLogin()
.successHandler(new CustomSuccessAuthenticationHandler())
.failureHandler(new CustomFailureHandler())
.loginPage("/login").permitAll();
ДОПОЛНЕНО-2 Я обновил свою структуру, но все еще есть проблемы с перенаправлением из/входа в пользовательский логин.
ДОПОЛНЕНО-3 Я посмотрел на 2 комментария Боб Шилдс: https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot я сделал следующее:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
super.addViewControllers(registry);
registry.addViewController("/savepassword").setViewName("savepassword.html");
registry.addViewController("/login").setViewName("login.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
Я поставил .html, так как в противном случае/Логин может вызвать рекурсивные проблемы , С помощью этой конфигурации я могу ввести/login и /templates/login.html будет вызываться (то же самое для savepassword.html).
Теперь я хотел бы знать, как включить мои CSS/JS в HTML:
<link rel="stylesheet" type="text/css" href="..resources/stylesheets/bootstrap.min.css" />
<script src="..resources/scripts/angular.min.js"></script>
<script src="..resources/scripts/login.js"></script>
Это не работает ... но я Cann называть мои сценарии непосредственно с/скриптов/логин .js.
Можете ли вы попробовать с /login.html? –
Нет, поскольку появляется страница Spring Spring по умолчанию. Регулярно, наш пользовательский login.html (static/pages/login.html) должен появиться. Я обновил свой ответ, чтобы вы могли увидеть конфигурацию безопасности пружины. Я думал, что 'ViewControllerRegistry' разрешает вход в static/pages/login, html и занимает эту страницу входа – Andy
Возможно, мне нужно поставить статическую папку в src/main/ressource вместо того, чтобы вставлять в webapp? – Andy