【问题标题】:PasswordEncoder mapped for the id "null"为 ID“null”映射的 PasswordEncoder
【发布时间】:2020-06-24 08:35:26
【问题描述】:

当我进入授权页面时,我在spring security中使用了xml配置,我应该被抛出到主页但是我得到这个错误:

我的登录页面:

我使用数据库中的数据存储

<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"/>

我的 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。但它不起作用。

我的代码需要改变什么?

【问题讨论】:

    标签: spring hibernate spring-mvc jsp spring-security


    【解决方案1】:

    我在代码中添加了以下内容:

        <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"/>
    

    现在一切正常

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 2019-06-02
      • 2020-10-27
      • 2018-09-14
      • 2021-06-02
      • 2018-11-14
      • 2020-08-11
      • 2020-07-03
      相关资源
      最近更新 更多