spring-security和servlet的filter

如果要对Web资源进行保护,最好的办法莫过于Filter
如果要想对方法调用进行保护,最好的办法莫过于AOP

spring-security和servlet的filter_第1张图片
servlet的filter

Spring Security 作为一个单独的过滤器安装在链中,其配置类型为 FilterChainProxy。


spring-security和servlet的filter_第2张图片
增加spring security框架

Spring Security 可以根据访问地址进行细化:


spring-security和servlet的filter_第3张图片
图2 细化过滤器

安全过滤器链(或等同于WebSecurityConfigurerAdapter)具有请求匹配器,用于决定是否将其应用于HTTP请求。 一旦决定采用特定的过滤器链,则不会应用其他过滤器。


这里可以跟spring security的核心类进行对应一下:
【备注】有些书也会把AuthenticationManager等同于非父类的那些ProviderManager,就是除了顶上那个这张图里的其他ProviderManager

spring-security和servlet的filter_第4张图片
图3 核心类

  • 每个人都是一个 ProviderManager,他们共享一个父类。
  • 有时应用程序具有受保护资源的逻辑组(例如所有与路径模式/ api / **相匹配的Web资源),并且每个组可以具有其自己的专用 AuthenticationManager
  • 父类是一种“全局”资源,充当所有提供者的失败回调。如果所有的提供者返回null,则将再交给父类去认证。 如果父类不可用,则会导致 AuthenticationException

参考:http://www.blogjava.net/youxia/archive/2008/12/07/244883.html
课程:https://www.iteye.com/blogs/subjects/spring_security
w3school:https://www.w3cschool.cn/springsecurity/cdz11ihv.html

慕课网的视频教程(springboot下的spring security配置):https://www.jianshu.com/p/24c6a65c3913

比较接近SSM下的spring security配置:https://wenku.baidu.com/view/e05cef2d00f69e3143323968011ca300a6c3f6e6.html

spring-security的核心能力:

  • 认证(你是谁)
  • 授权(你能干什么)
  • 攻击防护(防止伪造身份)

原理:在web.xml中配置的一个代理,web.xml中的代理依次调用下面的Bean,就实现了对Web资源的保护。同时这些Filter作为Bean被Spring管理。

 
      springSecurityFilterChain
     org.springframework.web.filter.DelegatingFilterProxy
   
   
      springSecurityFilterChain
      /*
   

配置文件spring-security要在tomcat启动的时候被加载


      contextConfigLocation
   /WEB-INF/config/applicationContext.xml,/WEB-INF/config/spring-security.xml 
   

   
   org.springframework.web.context.ContextLoaderListener
   

spring-security.xml




    
    
    
    
    
    
    

    
        
        
        

        
        
        
        
        

        
        
            
        
    
    
    
        
            
                
            
        
    


这个文件说明了两件事情:

  • 对所有http的请求(pattern="/**")进行拦截;
  • 加入一个authentication-manager, 里面提供一种认证方式,就是对账号密码进行验证;

注意,需要自己增加一个login.jsp的登陆页和登陆成功后默认会跳转的index.jsp页面
【参考】https://blog.csdn.net/houysx/article/details/80380831
这个XML如何解释的代码:https://www.cnblogs.com/xhj123/p/6193864.html

过滤器链的顺序是非常重要的,接下来看看过滤链的顺序。

常用的filter:

  1. 制定必须为https连接;
  2. 从Session中提取用户的认证信息;
  3. 退出登录;
  4. 登录;
  5. 记住用户;
  6. 所有的应用必须配置这个Filter。

你可能感兴趣的:(spring-security和servlet的filter)