Spring инициализатор блокирует Spring Security Войти - PullRequest
0 голосов
/ 07 сентября 2018

В проекте, который я разрабатываю на ранних стадиях, всякий раз, когда я добавляю к web.xml ContextLoaderListener с его параметрами, пользовательским логином или логином по умолчанию для загрузок Spring-Security, и он отображает ошибку 404. Пока без него логин загружается нормально.

В настоящее время я использую Hibernate 5, Spring 5.0.7 и внедряю Spring Security.

Помощь будет оценена. Спасибо.

Это метод внутри класса, который расширяет WebSecurityConfigurerAdapter:

@Override
protected void configure(HttpSecurity http) throws Exception {
    // TODO Auto-generated method stub


    http
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .formLogin()
        .loginPage("/Login.xhtml").permitAll();
    http.formLogin().failureUrl("/Login.xhtml?error=true");

    http.formLogin().defaultSuccessUrl("/test.jsp",true);
}

.formLogin().loginPage("/Login.xhtml").permitAll(); также может быть заменен на .and().httpBasic();

затем внутри Webcontent-Web-Inf у меня есть web.xml, где я добавляю прослушиватель spring для его инициализации

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- PARAMETRO QUE INDICA NOMBRE Y RUTA DEL FICHERO DE CONFIGURACION DE 
    SPRING -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:com/spring/modelo.xml</param-value>
</context-param>`

modelo.xml содержит все сопоставления для спящего режима и т. Д. *

<?xml version="1.0" encoding="iso-8859-15"?>
<beans default-autowire="byName" default-lazy-init="true"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd

    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- COMPONENTE DE LECTURA DE PROPERTIES -->
<bean id="gestor_properties"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <!-- RUTA Y NOMBRE DE PROPERTIES A LEER -->
    <property name="location"

        value="classpath:com/spring/datos-conexion.properties" />
</bean>

<!-- ************ ZONA DE ACCESO A LA BASE DE DATOS ************ -->
<!-- CONEXION A LA BASE DE DATOS -->

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="configLocation"
        value="classpath:com/atos/hibernate/hibernate.cfg.xml">
    </property>
</bean>


<bean id="transactionManager"
    class="org.springframework.orm.hibernate5.HibernateTransactionManager" />


<tx:annotation-driven
    transaction-manager="transactionManager" />

<!-- **** DATASOURCE REQUERIDO POR TRANSACTION MANAGER **** -->
<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${spring.datasource.driver}" />
    <property name="url" value="${spring.datasource.url}" />

    <property name="username" value="${spring.datasource.nombre}" />
    <property name="password" value="${spring.datasource.clave}" />
</bean>



<!-- PAQUETES CON ANOTACIONES PARA SPRING PARA LA GESTION DEL MODELO -->


    <context:component-scan
    base-package="com.atos.hibernate.modelo" />

    <context:component-scan
    base-package="com.atos.hibernate.dao" />

    <context:component-scan
    base-package="com.atos.hibernate" />

    <context:component-scan
    base-package="com.atos.dao_ext" />

    <context:component-scan
    base-package="com.atos.util" />

Когда я тестирую исключительно свою внутреннюю часть проекта, он отлично работает с hibernate, и все запросы, которые я приказываю сделать с hibernate и т. Д., Работают нормально.

Но когда я внедрил систему весенней безопасности, наступила грусть ...

1 Ответ

0 голосов
/ 19 сентября 2018

Проблема решена, загружался тот факт, что у меня уже был загрузчик контекста для Springframework, который мешал безопасности нового контекста Spring. Это решается удалением аннотации @configure и удалением конструктора из `пакета com.atos.springSecurity;

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;

открытый класс SecurityWebApplicationInitializer расширяет AbstractSecurityWebApplicationInitializer {

} `

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...