Spring Security學(xué)習(xí)記錄:1.WebSecurityConfigurerAdapter 配置類

Spring Security的配置類要繼承WebSecurityConfigurerAdapter。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        //我代表代碼
    }
    @Override
    public void configure(HttpSecurity http) throws Exception {
        //我代表代碼
    }
    @Override
    public void configure(WebSecurity web) throws Exception {
        //我代表代碼
    }
}

配置類可以@Override三個配置方法:

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
               //添加后門
        auth.authenticationProvider(backdoorAuthenticationProvider);
        //自定義AuthenticationProvider實例加入AuthenticationManager
        auth.userDetailsService(backendSysUserDetailsServiceImpl).passwordEncoder(new BCryptPasswordEncoder());
        auth.authenticationProvider(backendSysUserAuthenticationProvider);
    }

AuthenticationManagerBuilder用來配置全局的認(rèn)證相關(guān)的信息,其實就是AuthenticationProvider和UserDetailsService,前者是認(rèn)證服務(wù)提供者,后者是認(rèn)證用戶(及其權(quán)限)。

    @Override
    public void configure(HttpSecurity http) throws Exception {
         http
                .authorizeRequests()
                .antMatchers("/",
                        "/index",
                        "/error"
                ).permitAll()
                .antMatchers("/user/**").hasRole("USER")
                .antMatchers("/admin/**").hasRole("ADMIN")
                .and()
                .formLogin().loginPage("/login").defaultSuccessUrl("/user")
                //TODO 自定義參數(shù)名稱,與login.html中的參數(shù)對應(yīng)
                .usernameParameter("myusername").passwordParameter("mypassword")
                .and()
                .logout().logoutUrl("/logout").logoutSuccessUrl("/login")
                //鑒權(quán)
                .and()
                .authorizeRequests()
                .withObjectPostProcessor(new ObjectPostProcessor<FilterSecurityInterceptor>() {
                    @Override
                    public <O extends FilterSecurityInterceptor> O postProcess(O object) {
                        object.setSecurityMetadataSource(backendSysRoleSecurityMetadataSourceImpl);
                        object.setAccessDecisionManager(backendSysRoleAccessDecisionManagerImpl);
                        return object;
                    }
                });
    }

HttpSecurity 具體的權(quán)限控制規(guī)則配置。一個這個配置相當(dāng)于xml配置中的一個標(biāo)簽。
各種具體的認(rèn)證機(jī)制的相關(guān)配置,OpenIDLoginConfigurer、AnonymousConfigurer、FormLoginConfigurer、HttpBasicConfigurer
LogoutConfigurer
RequestMatcherConfigurer:spring mvc style、ant style、regex style
HeadersConfigurer:
CorsConfigurer、CsrfConfigurer
SessionManagementConfigurer:
PortMapperConfigurer:
JeeConfigurer:
X509Configurer:
RememberMeConfigurer:
ExpressionUrlAuthorizationConfigurer:
RequestCacheConfigurer:
ExceptionHandlingConfigurer:
SecurityContextConfigurer:
ServletApiConfigurer:
ChannelSecurityConfigurer:
此模塊的authenticationProvider和userDetailsService;
SecurityFilterChain控制。

    @Override
    public void configure(WebSecurity web) throws Exception {
         web.ignoring().antMatchers("/css/**", "/js/**");
    }

WebSecurity 全局請求忽略規(guī)則配置(比如說靜態(tài)文件,比如說注冊頁面)、全局HttpFirewall配置、是否debug配置、全局SecurityFilterChain配置、privilegeEvaluator、expressionHandler、securityInterceptor。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容