전송 주석을 저지와 함께 작동하지 않습니다
-
21-12-2019 - |
문제
운이없이 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를 사용하는 것이 었습니다.그들은 아주 비슷하기 때문에 많은 일이 아니 었습니다.
제휴하지 않습니다 StackOverflow