Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个Spring安全配置到底意味着什么?_Java_Spring_Spring Mvc_Spring Security_Servlet Filters - Fatal编程技术网

Java 这个Spring安全配置到底意味着什么?

Java 这个Spring安全配置到底意味着什么?,java,spring,spring-mvc,spring-security,servlet-filters,Java,Spring,Spring Mvc,Spring Security,Servlet Filters,我正在学习Spring核心认证,不清楚如何将Spring Security项目配置到应用程序中 在课程文档中,我发现了以下两个代码片段: 1) web.xml中的配置: <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterP

我正在学习Spring核心认证,不清楚如何将Spring Security项目配置到应用程序中

在课程文档中,我发现了以下两个代码片段:

1) web.xml中的配置:

<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>

springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
我对JavaEE(以及Spring)非常陌生,因此通过在线阅读,我了解到这个过滤器类似于一个Servlet,它对资源的请求(Servlet或静态内容)或资源的响应执行过滤任务,或两者兼而有之。因此,如果标准的Servlet是用于处理请求、创建内容和给出响应的对象(例如,处理HttpRequest的HttpServlet,并给出包含要显示的视图的HttpResponse),过滤器不会创建内容,而是创建详细的资源

因此,过滤器是可以在Servlet编程中用于以下目的的Java类:

  • 在客户端访问后端资源之前拦截客户端请求
  • 在将服务器的响应发送回客户端之前处理这些响应
规范中建议了各种类型的过滤器,如身份验证过滤器(这是用于此任务的Spring安全性的类型吗?)

那么,声明并映射到上一个代码段中的过滤器究竟做了什么呢?我认为它将springSecurityFilterChain应用于所有指向/*URL模式的请求(我认为这意味着所有最终声明处理请求的servlet)

好的,但是这个springSecurityFilterChain到底是什么?。看看这里:

在我看来,Spring并没有使用单一的过滤器,但是这个springSecurityFilterChain在内部维护一个过滤器链(因此它使用更多的过滤器),其中每个过滤器都有特定的职责,并且根据需要的服务从配置中添加或删除过滤器

但这些过滤器具体在哪里声明

2) 课程幻灯片中显示的第二个代码片段是这个(我不明白它是否与前一个相关\链接):


我知道它会截取URL,并且这些截取的URL会按照列出的顺序进行计算(使用第一个匹配,将特定的匹配放在第一位)

因此,例如,如果URL与/accounts/edit*模式匹配,则应用角色管理访问级别。但这到底是什么?这是我必须写的东西还是Spring框架提供的东西

另一个疑问是:第二个代码在哪里被剪断?到XMLSpring配置文件中?它与第一个代码段有什么关系(如果存在关系)

Tnx

  • DelegatingFilterProxy顾名思义,它只将web容器筛选器请求委托给spring安全筛选器链,而从未实现Servlet筛选器。如果我们为http请求设置auto-config属性,则在Spring-security.xml文件中定义Spring安全筛选器链,所有筛选器链都将添加
  • 可以单独添加每个安全过滤器,如

    <bean id="filterSecurityInterceptor"
            class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
      <property name="authenticationManager" ref="authenticationManager"/>
      <property name="accessDecisionManager" ref="accessDecisionManager"/>
      <property name="securityMetadataSource">
        <security:filter-security-metadata-source>
          <security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/>
          <security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"/>
        </security:filter-security-metadata-source>
      </property>
    </bean>
    
    
    
    bean定义xml文件名通过

    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value> classpath:**/*-security.xml</param-value>
    </init-param>
    
    
    上下文配置位置
    类路径:*/*-security.xml
    
  • 默认情况下,spring提供很少的角色集。当您在bean定义中使用安全上下文时,它会做很多事情。我们只需要添加spring-security.jar文件。即使您可以使用ldap服务器进行身份验证,我们也可以

  • 如果我们想添加您自己的一组身份验证管理器服务,可以通过添加自定义身份验证管理器服务来完成

      <authentication-manager>
        <authentication-provider user-service-ref='myUserDetailsService'/>
      </authentication-manager>
    

      <authentication-manager>
        <authentication-provider user-service-ref='myUserDetailsService'/>
      </authentication-manager>