문제

운이없이 Spring Security Annotations를 사용하여 저지 서비스를 확보하려고합니다.

이 섹션을 web.xml에 추가했습니다.

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.test.proj.ui.web.rest;com.fasterxml.jackson.jaxrs</param-value>
    </init-param>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.test.commons.ui.web.jersey.RestApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
.

또한 ApplicationContext에서 이것을 사용하여 미리 사전 주석을 활성화했습니다.

<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" />
.

이이 서비스 클래스입니다.

@Component
@Path("/user/{uid: .*}")
public class UserResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @PreAuthorize("hasRole('ROLE_MANAGE_USER')")
    public Response getUserDetail(@PathParam("uid") String uid) {
        return "Hi, this is a test";
    }
}
.

Spring Security는 인증에서 잘 작동하지만 권한 부여는 예상대로 작동하지 않으며 오류 또는 로그없이 전제 주석을 무시합니다.

봄 3.2.4 및 Spring Security 3.2.1 및 Jersy 2.6을 사용하고 있습니다.

모든 아이디어?

감사합니다

도움이 되었습니까?

해결책 2

스프링 구성 요소 스캔이 올바르게 구성되지 않았습니다!문제를 해결하려면 구성 요소 스캔 만 올바르게 추가하고 작동합니다.

다른 팁

우리는 똑같은 문제를 정확히 직면하고있었습니다.비즈니스 계층에서 @Preauthorize 주석이 작동했지만 나머지 리소스에서는 그렇지 않았습니다.이 상황의 부작용은 봄 콩 주사도 작동하지 않았다는 것입니다.모든 것이 오류가없는 모든 것.

100 % 작업 솔루션은 저지 대신 RESTEASY를 사용하는 것이 었습니다.그들은 아주 비슷하기 때문에 많은 일이 아니 었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top