一尘不染

HttpSecurity,WebSecurity和AuthenticationManagerBuilder

spring

谁能解释何时覆盖configure(HttpSecurity),configure(WebSecurity)以及configure(AuthenticationManagerBuilder)


阅读 756

收藏
2020-04-15

共1个答案

一尘不染

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/**");
}
2020-04-15