chapter09_保护Web应用_1_Spring Security简介

本文介绍Spring Security框架如何通过Servlet Filter提供Web安全性功能,包括使用DelegatingFilterProxy进行配置的方法,以及如何通过@EnableWebSecurity或@EnableWebMvcSecurity启用Web安全性和个性化定制安全性配置。
  • 安全性是绝大多数应用的一个重要切面。Spring Security是一个安全框架,它基于Spring AOP和Servlet中的Filter

  • 过滤Web请求

    (1) Spring Security借助一系列Servlet Filter提供各种安全性功能

    (2) 但是我们只需要配置一个Filter,当我们启用Web安全性的时候,会自动创建这些Filter

    (3) web.xml配置

      <web-app xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
               version="2.5"> 
    
          <filter>
              <filter-name>springSecurityFilterChain</filter-name>
              <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
          </filter>
    
          <filter-mapping>
              <filter-name>springSecurityFilterChain</filter-name>
               <url-pattern>/*</url-pattern>
          </filter-mapping>
    
          ...
    
      </web-app>
    

    注意 <filter-name>必须配置为springSecurityFilterChain。因为接下来Spring Security会配置在Web安全性之中,这里会有一个springSecurityFilterChain的Filter bean,DelegatingFilterProxy会将过滤逻辑委托给它。

    DelegatingFilterProxy是一个特殊的Servlet Filter,它的作用是将工作委托给一个Filter的实现类,这个实现类作为一个<bean>注册在Spring的上下文中

    (4) Java Config 配置

      public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer {
    
      }
    

    AbstractSecurityWebApplicationInitializer实现了WebApplicationInitializer,因此会被Spring自动发现,并用它在Web容器中注册DelegatingFilterProxy

    (5) 无论使用web.xml还是JavaConfig配置DelegatingFilterProxy,它们都会拦截发往应用中的请求,并将请求委托给id为springSecurityFilterChain的bean;

    SpringSecurityFilterChain是一个特殊的Filter,它可以连接任意其他的Filter。但是,无需知道细节,不需要显式声明SpringSecurityFilterChain以及它所链接在一起的其他Filter。当我们启用Web安全性时,会自动创建这些Filter

  • 简单的Web安全性配置

    (1) @EnableWebSecurity注解会启用Web安全功能,但是它必须配置在一个 实现了WebSecurityConfigurer的bean中 或 扩展了WebSecurityConfigurerAdapter(推荐)

    (2) 如果使用了Spring MVC的话,推荐用 @EnableWebMVCSecurity 代替 @EnableWebSecurity

    示例 SecurityConfig.java

      @Configuration
      @EnableWebMvcSecurity
      public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
      }
    

    (3) 按照上面的示例进行配置,会导致没有人能够进入系统,因为 WebSecurityConfigurerAdapter的默认configure方法是

      protected void configure(HttpSecurity http) throws Exception {
    
          logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
    
          http
              .authorizeRequests()
                  .anyRequest().authenticated()
                  .and()
              .formLogin().and()
              .httpBasic();
    

    }

    所以为了在安全性上进行个性化定制,需要配置以下三个方法中的1个或几个:

    configure(WebSecurity) 配置Filter链

    configure(HttpSecurity) 配置如果通过拦截器保护请求

    configure(AuthenticationManagerBuilder) 配置user-detail服务

基于STM32 F4的永磁同步电机无位置传感器控制策略研究内容概要:本文围绕基于STM32 F4的永磁同步电机(PMSM)无位置传感器控制策略展开研究,重点探讨在不依赖物理位置传感器的情况下,如何通过算法实现对电机转子位置和速度的精确估计与控制。文中结合嵌入式开发平台STM32 F4,采用如滑模观测器、扩展卡尔曼滤波或高频注入法等先进观测技术,实现对电机反电动势或磁链的估算,进而完成无传感器矢量控制(FOC)。同时,研究涵盖系统建模、控制算法设计、仿真验证(可能使用Simulink)以及在STM32硬件平台上的代码实现与调试,旨在提高电机控制系统的可靠性、降低成本并增强环境适应性。; 适合人群:具备一定电力电子、自动控制理论基础和嵌入式开发经验的电气工程、自动化及相关专业的研究生、科研人员及从事电机驱动开发的工程师。; 使用场景及目标:①掌握永磁同步电机无位置传感器控制的核心原理与实现方法;②学习如何在STM32平台上进行电机控制算法的移植与优化;③为开发高性能、低成本的电机驱动系统提供技术参考与实践指导。; 阅读建议:建议读者结合文中提到的控制理论、仿真模型与实际代码实现进行系统学习,有条件者应在实验平台上进行验证,重点关注观测器设计、参数整定及系统稳定性分析等关键环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值