如何在Spring Security表达式中使用Spring Service方法?

时间:2012-11-16 22:30:22

标签: spring spring-security

我有一个spring服务,并希望在spring安全表达式中使用服务中的方法与当前用户相结合。我看到another question on stackoverflow让我相信这样的事情是可能的。我正在使用spring 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

1 个答案:

答案 0 :(得分:0)

Version 3.1.0.RC2

开始,对于Spring Security,

@orgService应该有效

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

<小时/> I'm using spring 3.1.2.

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