我正在尝试在RESTEasy应用程序中添加身份验证和授权。
这是我的服务方法,我想限制为具有“admin”角色的用户:
@RolesAllowed("admin")
@PUT
@Path("/hosts/{id}")
@Produces("application/json")
public Response updateHost(@PathParam("id") int id) {
这是我的拦截器
@Provider
public class SecurityInterceptor implements javax.ws.rs.container.ContainerRequestFilter
{
@Override
public void filter(ContainerRequestContext requestContext)
{
但是,我的filter方法没有被调用,并且没有完成updateHost的授权。阅读文档后,我的理解是SecurityInterceptor上的@Provider将确保在收到请求后调用其过滤方法。 任何人都可以帮我弄清楚它为什么不被召唤?
答案 0 :(得分:3)
我发现我们需要在Web部署描述符中启用基于角色的安全性:
<context-param>
<param-name>resteasy.role.based.security</param-name>
<param-value>true</param-value>
</context-param>