首页 > 解决方案 > 警告:编码密码看起来不像 BCrypt

问题描述

控制器类方法:

@RequestMapping(value = "/admin", method = RequestMethod.GET)
public String adminPage() {
    return "privatePage";

弹簧安全配置:

<http auto-config="true">
    <intercept-url pattern="/admin"
        access="hasRole('ROLE_ADMIN')" />
</http>
<authentication-manager>
    <authentication-provider>
        <password-encoder ref="bCryptPasswordEncoder" />
        <user-service>
            <user name="admin" password="passwordEncoder.encode(123456)"
                authorities="hasRole(ROLE_ADMIN,ROLE_USER)" />
        </user-service>
    </authentication-provider>
</authentication-manager>
<beans:bean  id="bCryptPasswordEncoder"     class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
    <beans:constructor-arg value="10" />
</beans:bean>

错误:

您的登录尝试不成功,请重试。

原因:凭据错误。

感谢任何回应。

标签: javaspring-securityspring-oauth2

解决方案


解决方案

<user-service>
            <user name="admin" password="$2a$10$hbxecwitQQ.dDT4JOFzQAulNySFwEpaFLw38jda6Td.Y/cOiRzDFu"
                authorities="ROLE_ADMIN" />
        </user-service>

评论

admin@123 相当于 $2a$10$hbxecwitQQ.dDT4JOFzQAulNySFwEpaFLw38jda6Td.Y/cOiRzDFu 这个编码密码。因此,在密码文本中输入 admin@123。

用于转换编码值的类

BCryptPasswordEncoder b=new BCryptPasswordEncoder();
String str=b.encode("admin@123");
System.out.println("Encoding "+str);

生成编码值。


推荐阅读