我使用基本和基于表单的身份验证配置了 spring-security auto-config='true'。
我希望下面的端点/api/**不使用基于表单的安全性。外部的其他端点/api/**应使用基于表单的登录。我希望401对这些未在/api/**.
更新:感谢卢克泰勒在下面的评论,我提出了以下解决方案。
注意:此技术只能在 spring-security 3.1 中应用。
首先我单挑/api/**。我们从不创建会话,但如果可用的话,我们会使用它,这是create-session="never"由<session-management/>.
<http pattern="/api/**" create-session="never" use-expressions="true">
<http-basic />
<session-management />
<intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/" access="permitAll"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
</http>