谁能解释何时覆盖configure(HttpSecurity),configure(WebSecurity)以及configure(AuthenticationManagerBuilder)?
configure(HttpSecurity),configure(WebSecurity)
configure(AuthenticationManagerBuilder)
configure(AuthenticationManagerBuilder)用于通过允许轻松添加AuthenticationProviders来建立身份验证机制:例如,以下内容定义了具有内置“用户”和“管理员”登录名的内存中身份验证。
public void configure(AuthenticationManagerBuilder auth) { auth .inMemoryAuthentication() .withUser("user") .password("password") .roles("USER") .and() .withUser("admin") .password("password") .roles("ADMIN","USER"); }
configure(HttpSecurity)允许基于选择匹配在资源级别配置基于Web的安全性-例如,以下示例将以/ admin /开头的URL限制为具有ADMIN角色的用户,并声明需要使用其他任何URL成功认证。
protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated() }
configure(WebSecurity)用于影响全局安全性的配置设置(忽略资源,设置调试模式,通过实现自定义防火墙定义拒绝请求)。例如,以下方法将导致以/ resources /开头的任何请求都被忽略,以进行身份验证。
public void configure(WebSecurity web) throws Exception { web .ignoring() .antMatchers("/resources/**"); }