我使用基本和基于表单的身份验证配置了 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>