У меня возникают проблемы при загрузке данных c, например, изображений, стилей css и т. Д. c .... в пружине 5 при добавлении безопасности, без защиты load ok
Вот как я это сделал.
Сначала , я создаю проект с помощью Spring Starter Project в Eclipse Photon
Spring Boot Version: 2.2.6
Добавить несколько зависимостей:
Spring web
Thymeleaf
Spring Security
Spring Boot DevTools
Spring Boot Actuator
Запустите проект, и я использую сгенерированный пароль безопасности и все в порядке.
Теперь я добавляю статические ресурсы
Так что я создайте папку с именем / assets / imgs
в src / main / resources / static /
В эту папку я добавляю поддельное изображение для использования, называемое fake-image.png
Я создаю класс с пользователем, паролем и шаблонами, чтобы разрешить мои ресурсы.
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests().antMatchers("/resources/**", "/static/**","/src/main/resources/**").permitAll().and()
.formLogin().loginPage("/login").permitAll()
.usernameParameter("username").passwordParameter("password")
.defaultSuccessUrl("/loginsuccess").permitAll().and()
.logout().permitAll();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder builder) throws Exception {
PasswordEncoder encoder = passwordEncoder();
UserBuilder users = User.builder().passwordEncoder(encoder::encode);
//User to login
builder.inMemoryAuthentication()
.withUser(users.username("admin").password("q").roles("ADMIN"));
}
}
Я создаю класс для добавления своей формы входа
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.addViewController("/").setViewName("login");
}
}
Наконец, я добавляю логин. html страница, подобная этой, чтобы показать простое изображение
<!DOCTYPE html>
<html lang="es" xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="" />
<meta name="author" content="" />
<meta name="ctx" th:content="@{/}" />
<title>Test Static Files</title>
</head>
<body>
<div class="container">
<div class="row no-gutters mt-3">
<div class="col columna-banner">
<img class="img-fluid rounded login-banner-image"
th:src="@{/assets/imgs/fake-image.png}" />
</div>
</div>
</div>
</body>
</html>
В консоли затмения я получаю это предупреждение:
WARN 1434 --- [nio-8080-exe c -2] osweb.servlet.PageNotFound: Нет отображения для GET /assets/imgs/fake-image.png
ОБНОВЛЕНИЕ 1:
Добавлен код для github:
https://github.com/davisoski/stackoverflow-static-files
Я что-то упустил?
Есть предложения?
Спасибо