PasswordEncoder сопоставлен для идентификатора "ноль" - PullRequest
0 голосов
/ 12 марта 2020

Я использую xml конфигурацию в весенней безопасности, когда я go на страницу авторизации, я должен быть брошен на главную страницу, но я получаю эту ошибку: enter image description here

моя страница входа в систему: enter image description here

Я использую хранилище данных в db

<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.postgresql.Driver"/>
        <property name="url" value="jdbc:postgresql://localhost:5432/java_a_from_z?useSSL=false"/>
        <property name="username" value="postgres"/>
        <property name="password" value="root"/>

    </bean>


    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
        <property name="packagesToScan" value="com.demo"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <bean id="myTransactionManager"
          class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

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

my spring-security. xml:

  <http auto-config="true">
        <intercept-url pattern="/list" access="ROLE_USER"/>
        <intercept-url pattern="/security" access="isAnonymous()"/>

        <form-login login-page="/security"
                      login-processing-url="/security"
                      default-target-url="/list"
                      authentication-failure-url="/security?error"
                      username-parameter="username"
                      password-parameter="password"/>

        <logout logout-success-url="/security?logout"/>
        <csrf disabled="true"/>
    </http>


    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="user" password="password" authorities="ROLE_USER"/>
            </user-service>
        </authentication-provider>
    </authentication-manager>

    <beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

Я пытался использовать в своем коде NoOpPasswordEncoder и BCryptPasswordEncoder. Но это не работает.

enter image description here

что нужно изменить в моем коде?

1 Ответ

0 голосов
/ 15 марта 2020

Я добавил в свой код следующее:

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="user" password="$2a$10$BHjEcnhAgqRH0Vj6aPmGTOtQfYdx3PsvTWjsVxVBouiLTzGSLTSz2" authorities="USER"/>
            </user-service>
            <password-encoder ref="encoder" />
        </authentication-provider>
    </authentication-manager>

    <beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

и теперь все работает

...