Spring boot 整合 security 遇到 There is no PasswordEncoder mapped for the id “null”

用户名和密码正确也无法打开资源,还是停留在login页面。而且发现控制台报了异常——There is no PasswordEncoder mapped for the id “null”。

这是因为Spring security 5.0中新增了多种加密方式,也改变了密码的格式。

想我们的项目能够正常登陆,需要修改一下configure中的代码。我们前端传过来的密码进行了加密,spring security 官方推荐的是使用bcrypt加密方式。那么如何对密码加密呢,只需要在configure方法里面指定一下。

protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//inMemoryAuthentication 从内存中获取
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("user1").password(new BCryptPasswordEncoder().encode("123456")).roles("USER");
}

在inMemoryAuthentication()后面多了".passwordEncoder(new BCryptPasswordEncoder())",这相当于登陆时用BCrypt加密方式对用户密码进行处理。

posted @ 2019-02-25 16:42  Eno_莫问  阅读(320)  评论(0编辑  收藏  举报