Я запустил приложение Spring Boot + Angular и сейчас хочу развернуть все это как jar. Итак, я создал конфигурацию maven, в которой создается приложение angular, а затем копируется в / target / classes / resources.
Но каждый запрос на root (localhost: 8080) блокируется безопасностью. Когда я отключаю его, я вижу страницу, что означает, что все развернуто правильно, но почему-то Spring не позволяет мне это видеть. Вот моя простая конфигурация безопасности, я хочу, чтобы статические ресурсы были незащищены, в то время как любой другой запрос требует аутентификации:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
.anyRequest().authenticated()
.and().httpBasic();
}
}
Обновлено: Вот минимальный пример моей проблемы: https://gitlab.com/jnowacki/security-issue-demo
Обновлено еще раз: Я пробую все из этого поста: Обслуживание статических веб-ресурсов в приложении Spring Boot & Spring Security Я делаю что-то не так на концептуальном уровне? Неправильно ли обслуживать статический контент вместе с приложением Spring Boot?
Ваш вопрос непонятен. Если вы хотите разрешить все URL-адреса /, вам необходимо добавить этот URL-адрес в свою конфигурацию.
@dur, когда я настраиваю его следующим образом: http.authorizeRequests() .antMatchers("/").permitAll() .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .anyRequest().authenticated() .and().httpBasic(); index.html разрешен, но запрос css запрашивает учетные данные.




попробуйте ниже.
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
Обратитесь к весна-безопасность-муравейник
Добавьте это дополнительное переопределение:
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(AUTH_WHITELIST);
}
где AUTH_WHITELIST будет содержать игнорируемые пути. Например:
private static final String[] SWAGGER_AUTH_WHITELIST = {
// -- swagger ui
"/v2/api-docs",
"/swagger-resources",
"/swagger-resources/**",
"/swagger-ui.html",
"/resources/**"
};
Можете быть более конкретными? В примечаниях к выпуску 2.1 ничего подобного нет: github.com/spring-projects/spring-boot/wiki/…
Я добавил ссылку на минимальный пример, я не думаю, что он специфичен для 2.1, просто у меня есть эта версия, и она там не работает.
Используйте этот метод, чтобы разрешить статические ресурсы игнорировать Spring Security
//this method allows static resources to be neglected by spring security
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**", "/static/**");
}
Согласно StaticResourceLocationдокументы:
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
разрешит доступ к CSS, JS, ICO, изображениям и НЕ в HTML.
Чтобы разрешить index.html, вы можете использовать следующую конфигурацию:
http.authorizeRequests()
.antMatchers("/index.html", "/").permitAll()
.anyRequest().authenticated()
.and().httpBasic();
// расширяет WebSecrityConfiguratesAdapeter
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Overide
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers(HttpMethod.OPTIONS, ALL_ESCAPE)
.antMatchers("*.js")
.antMatchers(")
.antMatchers(BOWER_COMPONENTS)
.antMatchers(I18N)
.antMatchers(CONTENT);
}
}
вы должны соответствовать реальному пути или примеру:
.pathMatchers("/assets/**", "/static/**")
.permitAll()ere
@dur я добавил ссылку на репо с минимальным примером. Мне нужно обслуживать индекс без аутентификации и любой другой запрос после аутентификации. Я знаю, что могу разрешить все, а затем защитить только какой-то путь, например, / api, но дело не в этом.