@RolesAllowed在Jersey中不使用自定义SecurityContext?

时间:2013-11-12 15:27:28

标签: java rest jersey

我有一个简单的球衣2.4资源:

@RolesAllowed("admin")
public List<Folder> list(){}

我还有一个ContainerRequestFilter,用于设置自定义securitycontext:

public void filter(ContainerRequestContext requestContext) throws IOException {
requestContext.setSecurityContext(new MySecurityContext(...));
}

在list()函数中,我确实得到了正确的securitycontext:MySecurityContext。并且调用“securityContext.isUserInRole(”admin“)”有效。

但注释@RolesAllowed似乎没有做任何事情,永远不会调用MySecurityContext的函数isUserInRole。

我是否需要做一些特别的事情才能让@RolesAllowed工作?

2 个答案:

答案 0 :(得分:8)

找到它: - )

@RolesAllowed(“admin”)不是@RolesAllowed(“{admin}”)

最重要的一个:

寄存器(RolesAllowedDynamicFeature.class);

答案 1 :(得分:1)

您可以在web.xml中使用以下内容

<context-param>
    <param-name>resteasy.role.based.security</param-name>
    <param-value>true</param-value>
</context-param>