1. 程式人生 > >Springboot Security記憶體驗證無法登陸,There is no PasswordEncoder mapped for the id "null"

Springboot Security記憶體驗證無法登陸,There is no PasswordEncoder mapped for the id "null"

Security進行記憶體驗證使用者的時候,程式碼是這麼寫的

auth.inMemoryAuthentication().withUser("demo").password("demo").roles("USER");//使用者角色
auth.inMemoryAuthentication().withUser("ssss").password("111111").roles("SSSS");
auth.inMemoryAuthentication().withUser("dddd").password("111111").roles("DDDD");
auth.inMemoryAuthentication().withUser("ffff").password("111111").roles("FFFF");

報錯如下
在這裡插入圖片描述
看著視訊教學,老師也是這麼寫的,但是我的就不行,已經被視訊坑過不止一次兩次了,都是有剪輯的,後來發現這裡有坑

**首先Spring Security5.0之後,原始密碼是“password”,在Spring Security5.0中密碼的儲存格式是“{id}。。。”這種格式的。前面的id是加密方式,也就是說,程式拿到傳過來的密碼的時候,首先會以“{id}。。。”這種格式來確定後面的密碼是被怎麼樣加密的,如果找不到就認為id是null。所以我們的程式機會一直出現這個錯誤:There is no PasswordEncoder mapped for the id “null”。

所以我們只需要這麼些就可以解決了

auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("ceshi").password(new BCryptPasswordEncoder().encode("123456")).roles("USER");

完美