記録の11を解決します——Spring安全とjava.lang.IllgalArgement Exception:The e e isのPassword Enters mapped for the idエラー
9537 ワード
使用説明:
1.XバージョンのSpring-boot-starter-parentを使用しています.もしException parsing documentエラーが発生したら、通常は統合されたthymeleafとthymeleaf-layout-dialectバージョンが古いので、古いバージョンを排除して新しいバージョンに交換する必要があります.2、thymeleafと統合する場合は、pom.xmlファイルに導入する必要があります.
java.lang.IllagalAgment Exception:The re isのPassword Enters mapped for the id“null”
Spring Security 5.0の前に、デフォルト値
ソリューション1:-パスワード格納フォーマットを追加し、テキストのみに
データベースのパスワード検証の例を追加します.https://juejin.im/post/5c191e425188252dcb310898
Security JWTを統合し、前後に分離認証を認証する:https://www.jianshu.com/p/ca4cebefd1cc
ソース:https://github.com/Lswx2017/securitydemo.git
1.XバージョンのSpring-boot-starter-parentを使用しています.もしException parsing documentエラーが発生したら、通常は統合されたthymeleafとthymeleaf-layout-dialectバージョンが古いので、古いバージョンを排除して新しいバージョンに交換する必要があります.2、thymeleafと統合する場合は、pom.xmlファイルに導入する必要があります.
<dependency>
<groupId>org.thymeleaf.extrasgroupId>
<artifactId>thymeleaf-extras-springsecurity5artifactId>
dependency>
;ファイルヘッダにインポート
3、Spring Securityはデフォルトで登録ページと登録ロジック処理を提供します.カスタマイズされた登録ページを使うと、login Pageを使ってカスタマイズできます.GET方法は登録ページにジャンプし、POST方法は登録処理ロジックにジャンプします.両者は同じURLを使う必要があります./loginpage GET
/loginpage POST
/loginpage?error GET
/loginpage?logout GET
エラーjava.lang.IllagalAgment Exception:The re isのPassword Enters mapped for the id“null”
Spring Security 5.0の前に、デフォルト値
PasswordEncoder
はNoOpPasswordEncoder
であり、テキストの純粋なパスワードが必要である.Spring Security 5では、デフォルト値はDelegatingPasswordEncoder
であり、パスワード格納フォーマットが必要である.ソリューション1:-パスワード格納フォーマットを追加し、テキストのみに
{noop}
を追加します.@Configuration
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER")
.and()
.withUser("admin").password("{noop}password").roles("ADMIN");
}
}
解決策2:UserDetailsService
のためのUser.withDefaultPasswordEncoder()
の使用@Bean
public UserDetailsService userDetailsService() {
//
//User.UserBuilder users = User.withDefaultPasswordEncoder();
//InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
//manager.createUser(users.username("user").password("password").roles("USER").build());
//manager.createUser(users.username("admin").password("password").roles("USER", "ADMIN").build());
//return manager;
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
manager.createUser(User.withUsername("user1")
.password(encoder.encode("pwd1"))
.roles("VIP1", "VIP2").build());
manager.createUser(User.withUsername("user2")
.password(encoder.encode("pwd2"))
.roles("VIP3", "VIP2").build());
return manager;
}
参考文献:https://www.thymeleaf.org/doc/articles/springsecurity.html データベースのパスワード検証の例を追加します.https://juejin.im/post/5c191e425188252dcb310898
Security JWTを統合し、前後に分離認証を認証する:https://www.jianshu.com/p/ca4cebefd1cc
ソース:https://github.com/Lswx2017/securitydemo.git