Loading

SpringSecurity的整体架构和配置方法

SpringSecurity的整体架构和配置方法

整体架构

SpringSecurity是基于过滤器链实现的,

要使用过滤器就要进行相应的配置

配置方法

每个过滤器都有自己的配置类我们一般在自己继承WebSecurityConfigurerAdapter类重写其config方法来配置,

当配置某个拦截器的开始一般从调用某个方法开始,如调用formLogin()就相当于是开始了UsernamePasswordAuthenticationFilter的配置,结束是以调用add方法结束,

protected void configure(HttpSecurity http) throws Exception {
    // 该使用表单验证
    //
    // 配置登录注销路径
    http.formLogin()
            .loginProcessingUrl("/login")
            .successHandler(authenticationSuccessHandler)
            .failureHandler(authenticationFailHandler)
            .and()
            .logout()
            .logoutUrl("/logout")
            .logoutSuccessHandler(logoutSuccessHandler);
    // 配置路由权限信息
    //授权管理控制的方法,这个方法返回一个ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry对象。
    // Security所有的权限控制都基于这个类进行控制


    //  对请求进行授权   又是另外一个拦截器的配置
    http.authorizeRequests()
            // 进行 授权相关的拦截器的配置 FilterSecurityInterceptor  主要是 设置元数据的来源 访问决策管理器   
            .withObjectPostProcessor(new ObjectPostProcessor<FilterSecurityInterceptor>() {
                @Override
                public <O extends FilterSecurityInterceptor> O postProcess(O fsi) {

                    // 顾名思义  设置元数据的来源
                   
                    fsi.setSecurityMetadataSource(securityMetadataSource());
                    //访问决策管理器   
                    fsi.setAccessDecisionManager(accessDecisionManager());
                    return fsi;
                }
            })
            // 通过的请求全部需要是已经被认证过的也就是用户已经登录了
            .anyRequest().authenticated()
            .and()



            // 关闭跨站请求防护
            .csrf().disable().exceptionHandling()
            //  认证出现异常的处理
            //  在使用的是表单登录开启UsernamePasswordAuthenticationFilter时就不会自己重定向到框架自定义的登录页面

            .authenticationEntryPoint(authenticationEntryPoint)
            // 授权出现异常的处理
            .accessDeniedHandler(accessDeniedHandler)
            .and()
            .sessionManagement()
            .maximumSessions(20)
            .sessionRegistry(sessionRegistry());

}

第一次发表博客,内容可能有些错误还望大佬指教。图是拿大佬的

链接https://www.cnblogs.com/charlypage/articles/10809023.html

posted @ 2022-11-26 20:46  花园SON  阅读(0)  评论(0编辑  收藏  举报