1

我有一个 spring 服务,并希望在服务中使用一个方法,并在 spring 安全表达式中结合当前用户。我在 stackoverflow 上看到了另一个问题,这让我相信这样的事情是可能的。我正在使用弹簧 3.1.2。

@Service("orgService")
public class DefaultOrganizationService implements OrganizationService {
    @Override
    @Transactional
    public boolean isOrgAdmin(String username) 
    {   
       return true;
    }
}

然后在一个jsp中,我有这样的东西:

<sec:authorize access="orgService.isOrgAdmin(principal.name)">
    USER IS ORG ADMIN
</sec:authorize>

但是,当我使用此设置运行我的网络应用程序时,我得到

org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or property 'orgService' cannot be found on object of type 'org.springframework.security.web.access.expression.WebSecurityExpressionRoot'

我尝试过使用“@orgService...”和“orgService...”的表达式

我正在尝试做的事情是可能的,还是我需要实施PermissionEvaluator

4

1 回答 1

0

@orgService应该工作,对于从版本 3.1.0.RC2开始的 Spring Security

[SEC-1723] - Support use of bean names in expressions via @beanName notation


I'm using spring 3.1.2.

我认为您使用的是旧版本的 Spring Security,而不是 Spring。

于 2012-11-17T07:04:12.390 回答