Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS(Jersey 2)-使用JSR250注释进行授权_Java_Security_Rest_Jax Rs_Jersey 2.0 - Fatal编程技术网

Java JAX-RS(Jersey 2)-使用JSR250注释进行授权

Java JAX-RS(Jersey 2)-使用JSR250注释进行授权,java,security,rest,jax-rs,jersey-2.0,Java,Security,Rest,Jax Rs,Jersey 2.0,简介 泽西岛:2.9 本部分介绍如何为REST服务提供授权。有两种方法可以做到这一点: 标准Servlet方式,使用web.xml中的配置 使用JSR250注释的更好的解决方案 第一种方法很好,但我无法使第二种方法起作用 案例1(使用web.xml): 这个例子很有效。这是为了提供信息。如果你想跳,就跳第二个,这不起作用 资源非常简单: @Path(“/HelloWorld”) 公共类HelloWorldResource{ @得到 @生成(MediaType.TEXT\u PLAIN) 公共

简介

泽西岛:2.9

本部分介绍如何为REST服务提供授权。有两种方法可以做到这一点:

  • 标准Servlet方式,使用web.xml中的配置
  • 使用JSR250注释的更好的解决方案
第一种方法很好,但我无法使第二种方法起作用

案例1(使用web.xml):

这个例子很有效。这是为了提供信息。如果你想跳,就跳第二个,这不起作用

资源非常简单:

@Path(“/HelloWorld”)
公共类HelloWorldResource{
@得到
@生成(MediaType.TEXT\u PLAIN)
公共字符串sayHelloWorld(){
返回“你好,世界!!!”;
}
}
安全配置放在web.xml文件中,如下所示:


javax.ws.rs.core.Application
javax.ws.rs.core.Application
/休息/*
/休息/*
老板
基本的
默认领域
这个例子很好用。当我尝试访问http://{myhost}:8080/{war_name}/rest/HelloWorld时,我必须提供用户名和密码。这意味着数据库中的领域和配置很好。所以没有必要在这里展示它

案例2(JSR 250注释):

这个例子不起作用。资源与第一个示例中的几乎相同,只是添加了一些注释:

@Path(“/HelloWorld”)
@佩尔米塔尔
公共类HelloWorldResource{
@允许的角色(“老板”)
@得到
@生成(MediaType.TEXT\u PLAIN)
公共字符串sayHelloWorld(){
返回“你好,世界!!!”;
}
}
如您所见,添加了两个注释。它与第一个示例中的安全策略相同,但使用注释而不是web.xml来定义

现在web.xml看起来是这样的:


基本的
默认领域
此外,还添加了新类(如文档中所述):

@ApplicationPath(“rest”)
公共类MyApplication扩展了ResourceConfig{
公共应用程序(){
super(HelloWorldResource.class);
寄存器(rolesAllowedFeature.class);
}
}
这门课很重要。如您所见,所需角色AllowedDynamicFeature已注册。 因此,有两个主要步骤: -向资源添加注释 -注册角色AllowedDynamicFeature 完成了

问题:

第二个例子不起作用。提供用户名和密码的弹出窗口永远不会显示。禁止每次响应403。这不是领域和数据库配置的问题,因为此配置在第一个示例中运行良好

所以问题是:我的第二个实现有什么问题


t提前标记。

请尝试将其添加到web.xml块中,而不是ResourceConfig子类

<init-param>
            <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
            <param-value>com.sun.jersey.api.container.filter.RolesAllowedResourcFilterFactory</param-value>
        </init-param>

com.sun.jersey.spi.container.ResourceFilters
com.sun.jersey.api.container.filter.rolesAllowedResourceFilterFactory