【问题标题】:How spring use https for request automatically?spring 如何自动使用 https 进行请求?
【发布时间】:2015-10-31 19:18:05
【问题描述】:

我正在使用 spring 3.2.8.RELEASE 和 tomcat 7.0.55 实现一个 Web 应用程序。

我需要 spring 将 https 用于某些请求,例如“/login”,但不是用于所有请求。

应用程序在 http 和 https 上完美运行,但我想过滤一些请求以自动在 https 上运行。

如何配置 spring 来做到这一点?

【问题讨论】:

    标签: java spring spring-mvc tomcat spring-security


    【解决方案1】:

    您可以通过在每个拦截 URL 上添加 requires-channel- attribute 来配置需要 https。

    例如:

    <security:intercept-url pattern="/your_url" access="your_role" requires-channel="https"/>
    

    编辑:

    web.xml 中必需的 spring 安全映射:

    <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.xml? web.xml中是否需要定义securityChainFIlter?
    • 是的,这是必要的。我正在更新我的答案。
    • 如果它解决了您的问题,请接受并投票这个答案,以便它也可以帮助其他人。
    • 感谢@Babak Behzadi,我为你投了 1 票 :)
    【解决方案2】:

    如果您的应用程序同时支持 HTTP 和 HTTPS,并且您要求特定的 URL 只能通过 HTTPS 访问,那么使用 requires-channel 属性直接支持:

      <http>
        <intercept-url pattern="/secure/**" access="ROLE_USER" requires-channel="https"/>
        <intercept-url pattern="/**" access="ROLE_USER" requires-channel="any"/>
        ...
      </http>
    

    【讨论】:

    【解决方案3】:

    Spring 对其所有内部 URL 映射使用控制器 servlet。为避免使用此控制器,请更改 Web.xml 文件中的 URL 映射。

    在这里寻找类似的答案:Spring MVC URL pattern mappping in web.xml?

    或在此处查找有关配置“前端控制器”的 spring 文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html。这也将让您很好地了解其工作原理和组合方式。

    祝你好运,如果您需要更多帮助,请告诉我!

    顺便说一句:我想我会把它扔进去。在这里你可以看到映射到/example/...。你也可以在spring config文件中设置这种东西,但都遵循相同的原则。

    <web-app>
        <servlet>
            <servlet-name>example</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>example</servlet-name>
            <url-pattern>/example/*</url-pattern>
        </servlet-mapping>
    </web-app>
    

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 2017-07-28
      • 2012-11-15
      • 2011-12-23
      • 1970-01-01
      • 2021-07-11
      • 2019-06-05
      • 2014-10-10
      • 1970-01-01
      相关资源
      最近更新 更多