我是Spring框架中的新手,目前我正在开发Spring + Maven项目,在我的项目中有很多API,我需要在https上运行/运行几个API,它们不应该运行用http。
我对此做了一些发现我发现我们可以通过使用spring security requires-channel 属性轻松地完成此任务。
以下是为pom.xml和spring安全文件中的requires channel创建的几个条目。
pom.xml条目
<properties>
<spring.security.version>3.0.4.RELEASE</spring.security.version>
</properties>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security.version}</version>
</dependency>
在spring-context.xml文件中添加了与安全性相关的条目
<security:http auto-config="true">
<security:intercept-url pattern="**/MyTesting"
requires-channel="https" />
<security:authentication-manager>
</security:authentication-manager>
添加此条目后,我尝试点击http://localhost:8080/MyTesting,在添加requires-channel =&#34; https&#34;后,它对我有效。我试图找到这个,但我无法获得任何有用的链接。请检查上面的条目,并纠正我错过的。任何帮助将不胜感激。
答案 0 :(得分:0)
您的模式不正确。您可以使用以下内容作为完全匹配:
<security:intercept-url pattern="/MyTesting"
requires-channel="https" />
注意:Spring Security会在匹配网址时忽略上下文根,因此您无需对其进行说明。
如果您想匹配以/ MyTesting结尾的所有网址,则可以使用:
<security:intercept-url pattern="/**/MyTesting"
requires-channel="https" />