在Grails 3.0中,如何指定Spring Boot Security应该使用 BCrypt 进行密码编码?
以下几行应大致说明我认为需要完成的工作(但我大多只是在猜测):
import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder PasswordEncoder passwordEncoder passwordEncoder(BCryptPasswordEncoder)
我的应用程序spring-boot-starter-security作为依赖项加载:
spring-boot-starter-security
build.gradle
dependencies { ... compile "org.springframework.boot:spring-boot-starter-security"
我有一项服务可供使用userDetailsService:
userDetailsService
conf / spring / resources.groovy
import com.example.GormUserDetailsService import com.example.SecurityConfig beans = { webSecurityConfiguration(SecurityConfig) userDetailsService(GormUserDetailsService) }
我在下面的代码 grails-app/conf/spring/resources.groovy
grails-app/conf/spring/resources.groovy
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder beans = { bcryptEncoder(BCryptPasswordEncoder) }
并且我有一个Java文件,该文件按照所述进行配置spring-security。也可以在groovy中做到这一点,但是我在java中做到了。
spring-security
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @Configuration @EnableWebMvcSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired BCryptPasswordEncoder bcryptEncoder; @Autowired UserDetailsService myDetailsService @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // userDetailsService should be changed to your user details service // password encoder being the bean defined in grails-app/conf/spring/resources.groovy auth.userDetailsService(myDetailsService) .passwordEncoder(bcryptEncoder); } }