我有一个安全的资源,如果我删除了身份验证,它似乎工作,但是没有安全性,那么重点是什么?
这是我的代码:
@POST
@Path("/secured")
@Timed
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@UnitOfWork
@RolesAllowed("mainUser")
public Response aliveSecure(@Auth User user, CustomRequest test)
{
CustomResponse resp = new CustomResponse();
System.out.println(test.getMessage());
return Response.status(Response.Status.ACCEPTED).entity(resp).build();
}
CustomRequest和CustomResponse类型是非常标准的POJO,它们只包含一个名为" Message" - 它们实际上是相同的,但这只是我为了学习DropWizard而试图完成的练习。
现在,如果我删除这里的@Auth东西,以及@RolesAllowed等 - 使它变得不安全,那么该方法正常运行 - 但是,这是我在尝试启动应用程序时得到的错误。
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
! [[FATAL] No injection source found for a parameter of type public CustomRequest at index 0.;
答案 0 :(得分:0)
auth manual读得很清楚 -
如果您想使用
@Auth
将自定义主体类型注入您的 资源。
因此,您应确保在Service
扩展io.dropwizard.Application
@Override
public void run(SomeConfigThatExtendsConfiguration config, Environment environment) throws Exception {
....
environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
}
中添加以下内容
var html = HtmlService.createHtmlOutputFromFile('inputpage').setSandboxMode(HtmlService.SandboxMode.IFRAME).addMetaTag('viewport', 'width=device-width, initial-scale=1');