使用Spring 3.1.2和RestEasy 2.3.4。
我有一些REST资源。但是,我不想在Spring中指定所有角色需要哪些角色。这是我目前的设置:
<security:http auto-config="true" use-expressions="true">
<security:http-basic/>
<security:intercept-url pattern="/secrets/**" access="ROLE_USER"/>
<security:intercept-url pattern="/**"/>
</security:http>
对'/ secret / **'的调用进行了身份验证,我可以从SecurityContextHolder对象访问用户和角色。但是,即使我通过基本凭据,也不会对“/ **”进行调用。我想根据提取的数据进行授权,而不是通过网址进行授权。
除非我指定访问
,否则Spring Security似乎忽略了我的基本身份验证答案 0 :(得分:0)
尝试 isFullyAuthenticated()表达式:
<security:intercept-url pattern="/**" access="isFullyAuthenticated()" />
答案 1 :(得分:0)
我最终得到了一个不完美的解决方案。我通过身份验证访问将秘密网址放在首位。然后我允许所有其他未经身份验证的访问GET方法。这解决了现在的问题。我仍然希望根据所访问的数据进行身份验证。
这里需要身份验证的中间的intercept-url行不会向服务传递身份验证信息,即使它应该存在。
<security:http use-expressions="true">
<security:intercept-url pattern="/secrets/**" access="isAuthenticated()"/>
<security:intercept-url pattern="/**" method="GET" access="isAnonymous()"/>
<security:intercept-url pattern="/**" access="isAuthenticated()"/>
<security:http-basic/>
</security:http>