2017-08-24 318 views
0

我與Spring Security使用時auth.inMemoryAuthentication()或auth.userDetailsS​​ervice(UserDetailsS​​ervice的())

有關配置的工作,我已經通過一些來源以下兩種方法看出:

一個

@Override 
protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
    auth.inMemoryAuthentication().withUser("someuser").password("somepassword").authorities("ROLE_ADMIN", "ROLE_USER"); 
    //more as above 
} 

而且

兩個

@Override 
protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
    auth.userDetailsService(userDetailsService()); 
} 

@Bean 
@Override 
public UserDetailsService userDetailsService() { 
    InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(); 
    inMemoryUserDetailsManager.createUser(User.withUsername("someuser").password("somepassword").authorities("ROLE_ADMIN", "ROLE_USER").build()); 
    //more as above 
    return inMemoryUserDetailsManager; 
} 

直到這裏,目的或目標是爲開發創建一些用戶在內存中。實際上工作。因此:

  • 當一個選項是強制性的而另一個選項是強制性的?

回答

2

第二個變體是更通用的,因此更靈活,並使用org.springframework.security.config.annotation.authentication.configurers.userdetails.DaoAuthenticationConfigurer登記。它接受任何UserDetailsProvider,你選擇了內存中的標準實現。

第一個更緊湊,因爲InMemoryUserDetailsManagerConfigurer是標準配置。

但是最後結果是一樣的,因爲org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder#apply被調用:它接受三種類型:DAO(你的第二個),In-memory(你的第一個)和JDBC配置器。

相關問題