0

使用 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-object 访问用户和角色。但是,即使我通过了基本凭据,对 '/**' 的调用也不会获得身份验证。我想根据获取的数据而不是通过 url 进行授权。

除非我指定访问权限,否则 Spring Security 似乎忽略了我的基本身份验证

4

2 回答 2

0

尝试isFullyAuthenticated()表达式:

<security:intercept-url pattern="/**" access="isFullyAuthenticated()" />
于 2013-02-11T10:58:35.260 回答
0

我最终得到了一个不太完美的解决方案。我将经过身份验证的访问权限放在了 secrets url 的顶部。然后我允许所有其他未经身份验证的访问 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>
于 2013-02-18T11:48:45.683 回答