如何使用基本身份验证和基于表单的身份验证弹簧安全性

时间:2014-12-09 01:20:14

标签: spring forms security authentication

所以我正在寻找在同一资源上使用基于表单的身份验证和基本身份验证的编程配置方式。我的意思是,如果我填写登录表单并进行身份验证,我应该可以使用该网站。同时,如果我使用基本身份验证进行身份验证,我应该能够访问相同的资源。可能吗?我甚至想使用DelegatingAuthenticationEntryPoint,如果指定了某个标头,它将使用basic,否则它将使用基于表单的登录。无论如何,任何帮助将不胜感激?

1 个答案:

答案 0 :(得分:0)

我认为您应该查看Spring Security Current Reference Documentationrequest-matcher-ref元素的http属性。它使您可以指定使用或不使用特定FilterChain的自定义条件。例如,您可以根据传入请求的主机头确定要使用的身份验证机制。

<bean id="customMatcher1" class="org.springframework.security.web.util.matcher.ELRequestMatcher">
    <constructor-arg value="hasHeader('host', 'stackoverflow.com')"/>
</bean>
<bean id="customMatcher2" class="org.springframework.security.web.util.matcher.ELRequestMatcher">
    <constructor-arg value="hasHeader('host', 'careers.stackoverflow.com')"/>
</bean>
<sec:http request-matcher-ref="customMatcher1">
    <sec:http-basic />
</sec:http>
<sec:http request-matcher-ref="customMatcher2">
    <sec:form-login />
</sec:http>

查看并选择一个现有的实现,或查看并编写RequestMatcher接口的自己的实现。