Сбой входа в Spring Security при переносе проектов Spring mvc в Spring boot

Я перенес рабочий проект Spring mvc в Spring boot. См. Раздел 81.3 этого документа и этот вопрос. Модули работают нормально, но SpringSecurity не может войти в систему.

При открытии, когда домашняя страница перейдет на страницу входа в систему, а затем войдите в систему после того, как домашняя страница и страница входа в систему повторно перенаправляют 302 ответа HTTP, а затем возникает ошибка ERR_TOO_MANY_REDIRECTS.

После отладки, когда я вхожу в систему, Custom UserDetailsService может правильно найти и вернуть UserDetails, CustomULLAuthenticationSuccessHandler также обычно вызывает onAuthenticationSuccess,но в цепочке фильтров в вызове FilterSecurityInterceptor этот фильтр очищается, состояние входа SpringSecurity очищается, я и не вызывает выход из HTTP запрос. Я тщательно проверяю это в наборе create-session = "stateless" Ясно, что статус входа нормальный, но кажется, что мое приложение не может быть правильно повторно авторизовано. После того, как запрос был SecurityContextHolder.getContext().GetAuthentication().GetPrincipal() is anonymousUesr (файлы cookie успешно переданы loginKey = b3668242-574a-498e-bd03-243e28dc805c; SESSIONID_HAP = 98963370-8561-40a2-9898-a5e80f7d1186).

Этот проект более сложный, нижеследующее является важной частью конфигурации и кода, и их роль в основном является оригинальной и эквивалентной.

SpringBootConfigure.java SpringBoot введите точку.

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
@ImportResource({"classpath:/spring/applicationContext*.xml","classpath:/spring/appServlet/servlet*.xml"})
public class SpringBootConfigure {
...
}

Конфигурация Spring Security XML

<http access-decision-manager-ref="accessDecisionManager">
    <csrf disabled="true"/>
    <intercept-url pattern="/login" access="permitAll" />
    <intercept-url pattern="/login.html" access="permitAll" />
    <intercept-url pattern="/verifiCode" access="permitAll" />
    <intercept-url pattern="/common/**" access="permitAll" />
    <intercept-url pattern="/boot/**" access="permitAll" />
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />

    <access-denied-handler error-page="/403.html"/>


    <form-login login-page='/login' authentication-success-handler-ref="successHandler"
                authentication-failure-handler-ref="loginFailureHandler"/>
    <custom-filter ref="captchaVerifierFilter" before="FORM_LOGIN_FILTER"/>

    <logout logout-url="/logout"/>

    <headers defaults-disabled="true">
        <cache-control/>
    </headers>
</http>

<beans:bean id="loginFailureHandler" class="com.hand.hap.security.LoginFailureHandler"/>

<beans:bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased">
    <beans:constructor-arg>
        <beans:list>
            <beans:bean class="org.springframework.security.web.access.expression.WebExpressionVoter"/>
        </beans:list>
    </beans:constructor-arg>
</beans:bean>

<authentication-manager>
    <authentication-provider user-service-ref="customUserDetailsService">
        <password-encoder ref="passwordManager"/>
    </authentication-provider>
</authentication-manager>

<beans:bean id="captchaVerifierFilter" class="com.hand.hap.security.CaptchaVerifierFilter">
    <beans:property name="captchaField" value="verifiCode"/>
</beans:bean>

<beans:bean id="successHandler" class="com.hand.hap.security.CustomAuthenticationSuccessHandler">
    <beans:property name="defaultTargetUrl" value="/index"/>
</beans:bean>

0 ответов

Другие вопросы по тегам