我正在尝试使用春天安全注释没有任何运气的春天安全注释来保护泽西服务。

我已将此部分添加到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上使用此onlow-prepl-pert-onlinations:

<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在身份验证中运行良好,但授权不按预期工作,忽略无任何错误或日志的预授权注释。

我正在使用Spring 3.2.4和Spring Security 3.2.1和Jersy 2.6。

任何想法?

感谢

有帮助吗?

解决方案 2

Spring组件扫描未正确配置!要解决问题,只能正确添加组件扫描并工作。

其他提示

我们正面临同样的问题。在业务层@preacuthorize annotation工作但在其余资源上没有。这种情况的副作用是春季豆注射也没有工作。没有任何错误的一切。

100%的工作解决方案是使用恢复而不是泽西岛。它们非常相似,所以工作并不多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top