【问题标题】:How to configure BCryptPasswordEncoder in security xml如何在安全 xml 中配置 BCryptPasswordEncoder
【发布时间】:2013-12-11 05:51:50
【问题描述】:

我阅读了 spring security 的每个 API 和文档,但我找不到如何在 spring security bean xml 中配置 BCryptPasswordEncoder 强度参数。

尝试做类似的事情:BCryptPasswordEncoder(int strength);

我的security.xml:

<bean id="bCryptPasswordEncoder"
    class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />


<security:authentication-manager>
    <security:authentication-provider
        user-service-ref="userDetailsServiceImpl">
        <security:password-encoder ref="bCryptPasswordEncoder" />
    </security:authentication-provider>
</security:authentication-manager>  

【问题讨论】:

    标签: java spring-security


    【解决方案1】:

    为此,您将在 BCryptPasswordEncoder 上使用 Spring's constructor dependency injection

    <bean id="bCryptPasswordEncoder"
        class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
        <constructor-arg value="100"/>
    </bean>
    
    <security:authentication-manager>
        <security:authentication-provider
            user-service-ref="userDetailsServiceImpl">
            <security:password-encoder ref="bCryptPasswordEncoder" />
        </security:authentication-provider>
    </security:authentication-manager>
    

    从 Spring 3.1 开始,您可以使其更简洁 using the c-namespace。例如:

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:security="http://www.springframework.org/schema/security"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:c="http://www.springframework.org/schema/c"
        xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="bCryptPasswordEncoder"
              class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"
              c:strength="100"/>
    
        <security:authentication-manager>
            <security:authentication-provider
                user-service-ref="userDetailsServiceImpl">
                <security:password-encoder ref="bCryptPasswordEncoder" />
            </security:authentication-provider>
        </security:authentication-manager>
    
    </beans>
    

    你会注意到在这个例子中

    • 有一个新的 xmlns:c 声明
    • bCryptPasswordEncoder 中 c: 后面的值对应于构造函数参数名称。或者,您可以使用 c:_0 来指定索引。

    有关 c-namespace 的更多详细信息,请参阅上一个链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2017-12-02
      • 1970-01-01
      相关资源
      最近更新 更多