spring如何自动使用https请求?

时间:2015-08-08 12:21:07

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

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

我需要使用https来处理某些请求,例如' / login'但不适用于所有请求。

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

如何配置spring来执行此操作?

3 个答案:

答案 0 :(得分:1)

您可以通过在每个拦截网址上添加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>

我希望这会奏效。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

或者在这里查看有关配置'前端控制器'的弹簧文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html。这也将为您提供有关其如何工作和组合的良好概述。

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

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

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