我已经开始使用grails 3并使用spring boot starter security。 这是我的安全配置。
@Configuration
@EnableWebSecurity
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(jsr250Enabled = true)
class CustomSecurityConfig extends WebSecurityConfigurerAdapter{
CustomUserDetailsService userDetailsService
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder())
}
@Bean
CustomAuthenticationProvider authenticationProvider() {
CustomAuthenticationProvider provider = new CustomAuthenticationProvider();
return provider;
}
@Override
public void configure(WebSecurity web) throws Exception {
// This is here to ensure that the static content (JavaScript, CSS, etc)
// is accessible from the login page without authentication
web.ignoring().antMatchers("/assets/**");
web.ignoring().antMatchers("/views/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
println "configuring security"
http.httpBasic().disable()
http.authorizeRequests().expressionHandler()
http.formLogin().loginPage("/login").permitAll().and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/").deleteCookies("JSESSIONID")
.invalidateHttpSession(true);
http.authorizeRequests().antMatchers("/").permitAll();
http.csrf().disable();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
你们看到有什么错误吗?有了这个配置,每当我打开我的根URL,它应该重定向到登录页面,一直要求弹出认证!任何想法如何解决? 干杯!
答案 0 :(得分:0)
您应该使用其中一个@EnableWebSecurity
,@EnableWebMvcSecurity
和@EnableGlobalMethodSecurity
注释。
但是,仅在使用@EnableWebSecurity,@ EnableGlobalMethodSecurity或@EnableGlobalAuthentication注释的类中配置AuthenticationManagerBuilder非常重要。否则会产生不可预测的结果。
参考文献:
答案 1 :(得分:0)
知道了,
问题是我的安全配置没有自动注册。我必须在resources.groovy中创建bean并修复它。
customSecurityConfig(CustomSecurityConfig)
我让上下文扫描了我的安全配置并修复了它。 干杯!