spring不强制执行方法安全注释

IaC*_*der 15 java annotations spring-security

我失去了为什么spring没有在我的服务接口上强制执行@Secured("ROLE_USER").我的控制器是使用注释建立的.

我的服务接口的一个例子

public interface MyServiceManager {

    @Secured("ROLE_USER")
    public void delete(int cid);

    @RolesAllowed({"ROLE_USER"})
    public Contact getContact(int contactId);
}
Run Code Online (Sandbox Code Playgroud)

我的安全上下文:

<global-method-security   secured-annotations="enabled" jsr250-annotations="enabled">
</global-method-security>

<http auto-config="true" >
    <intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR" />
    <intercept-url pattern="/addcontact**" access="IS_AUTHENTICATED_REMEMBERED" />
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />

    <concurrent-session-control max-sessions="1"
        exception-if-maximum-exceeded="true"/>
    <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?login_error=1"/>
    <logout logout-success-url="/welcome.do" logout-url="/logout"/>
</http>
    <authentication-provider>
    <password-encoder hash="md5"/>
    <user-service>
        <user name="rod" password="a564de63c2d0da68cf47586ee05984d7" authorities="ROLE_SUPERVISOR, ROLE_USER, ROLE_TELLER" />
    </user-service>
</authentication-provider>
Run Code Online (Sandbox Code Playgroud)

Ken*_*Lai 7

你有声明吗?

<global-method-security   secured-annotations="enabled" jsr250-annotations="enabled" />
Run Code Online (Sandbox Code Playgroud)

在与您定义MyServiceManager bean的配置文件相同的配置文件中?在我打开org.springframework的调试之前,我遇到了同样的问题,并注意到spring安全性仅应用于与定义了global-method-security的文件相同的文件.