Ошибка, которую вы видите, не связана с вашей конфигурацией безопасности, вы можете взглянуть на этот билет, https://github.com/spring-projects/spring-boot/issues/3260
Если вы хотите разрешить весь трафик до конечных точек прошлого /public
, вы можете добавить RequestMatcher
в список игнорирования Spring Security.
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/rest/public/**");
}
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatcher("/rest/private/**")
.anyRequest().authenticated().and()
.httpBasic().and()
.csrf().disable()
}
}
http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#jc
Вы должны создать некоторую логику здесь. Если вы хотите иметь один цветной ящик из списка всех, вы должны помнить свой предыдущий основной ящик. Итак, вы напишете следующие инструкции:
html:
<div class="row">
<div class="box main"><span>1</span></div>
<div class="box green" id="one" ><span>2</span> </div>
</div>
<button>Change main box</button>
js:
let boxes = Array.from(document.querySelectorAll(".box"));
let button = document.getElementsByTagName('button')[0];
let mainBoxIndex = 0;
button.addEventListener('click', function() {
boxes[mainBoxIndex].classList.remove('main');
mainBoxIndex = (mainBoxIndex + 1 < boxes.length) ? mainBoxIndex + 1 : 0;
boxes[mainBoxIndex].classList.add('main');
});
Более подробно посмотреть вы можете здесь: https: / /codepen.io/anon/pen/jXJyqQ Надеюсь, это вам поможет.
Есть несколько проблем с вашим кодом (всегда проверяйте консоль на наличие ошибок).
Во-первых, поймите разницу между узлом и набором узлов. Такие функции, как getElementsByClassName
, возвращают набор узлов , который представляет собой массив узлов. Поэтому вы не можете запускать методы узлов на них как есть, т. Е. Это приведет к ошибке:
boxDiv.nextSiblings(... //boxDiv is not a node; it's a nodeset
Следовательно, вам нужно перебрать набор узлов и работать с каждым элементом по очереди.
Далее, nextSiblings
и previousSiblings
не являются допустимыми методами; они должны быть в единственном числе, а не во множественном числе.
Далее, вы предполагаете, что есть следующий и предыдущий братья и сестры. Это приведет к ошибке в первом и последнем .box
div по очевидным причинам.
Кроме того, пока мы здесь:
.onclick
и вместо этого используйте addEventListener()
. Есть несколько причин для этого, которые выходят за рамки этого ответа. let
, чем var
Давайте все соберем вместе
let
parent = document.querySelector('#row'),
boxDiv = document.querySelectorAll('.box'),
btnCh = document.querySelector('#changeColor')
;
btnCh.addEventListener('click', evt => {
boxDiv.forEach(el => {
if (el.classList.contains('green')) {
if (el.nextSibling) el.nextSibling.classList.add('green');
if (el.previousSibling) el.previousSibling.classList.add('green');
}
});
}, false);