- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已按照以下链接中 pandadb 的回答中给出的所有步骤进行操作 How to Optionally Protect a Resource with Custom Dropwizard Filter
我将自定义注释添加到资源方法中,但自定义授权过滤器未被调用。
谁能告诉我我可能错过了什么。
更新:- 我正在使用 dropwizard 1.0 使用 java8 并使用 maven 构建应用程序。
最佳答案
首先检查this Dropwizard Feature example和 Dropwizard Authorization 。然后请提供更多详细信息、您已经完成的操作以及您正在使用的 Dropwizard 版本。
<小时/>毕竟我必须猜测,你已经做了什么......
您已创建自定义授权人吗?
public class YourCustomAuthorizer implements Authorizer<User> {
@Override
public boolean authorize(User user, String role) {
return user.getName().equals("good-guy") && role.equals("ADMIN");
}
}
您已经注释了您的资源吗?
@RolesAllowed("ADMIN")
@GET
public SecretPlan getSecretPlan() {
return dao.findPlanForUser(user);
}
您在应用程序运行方法中注册了身份验证和授权类吗?
@Override
public void run(ExampleConfiguration configuration,
Environment environment) {
environment.jersey().register(new AuthDynamicFeature(
new BasicCredentialAuthFilter.Builder<User>()
.setAuthenticator(new YourCustomAuthenticator())
.setAuthorizer(new YourCustomAuthorizer())
.setRealm("SUPER SECRET STUFF")
.buildAuthFilter()));
environment.jersey().register(RolesAllowedDynamicFeature.class);
//If you want to use @Auth to inject a custom Principal type into your resource
environment.jersey().register(new AuthValueFactoryProvider.Binder<>(User.class));
}
如果您已经完成了此操作,并且您的身份验证之前已完成并且没问题,那么它应该可以工作。如果您想授权所有未经身份验证/授权的GETS,并仅授权经过身份验证的用户的POST,您可以这样做:
// do not add any annotations here and all users without authentication can do this GET @RolesAllowed("ADMIN")
// do not use '@Auth User user' in method params and do not annotate this method with '@Auth' if you want non authenticated users to do the GET
@GET
public SecretPlan getSecretPlan() {
return dao.findPlanForUser(user);
}
//here just authorized useras can do HTTP POSTs
@RolesAllowed("ADMIN")
@GET
public SecretPlan postSecretPlan() {
return dao.findPlanForUser(user);
}
我过去遇到的另一个问题是我使用 ANT 和 IVY 而不是使用 Maven 构建应用程序。如果操作不当,可能会导致几个问题。
<小时/>如果您的问题没有解决,请提供比“这不起作用,请帮忙”更多的信息。*
关于java - Dropwizard 具有 DynamicFeature 的自定义授权过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39140506/
在我的项目中,我想生成一个包含有关动态功能信息的类。通过以下方式添加动态功能: // In the base module’s build.gradle file. android { ...
从即时应用程序迁移到应用程序包后,我收到以下错误。 Could not set unknown property 'dynamicFeatures' for object of type com.an
我已按照以下链接中 pandadb 的回答中给出的所有步骤进行操作 How to Optionally Protect a Resource with Custom Dropwizard Filter
当我尝试运行插桩单元测试时,我遇到了启用动态功能的 list 合并问题。 我尝试将模块添加为“androidTestImplementation 项目”,但由于它们是“功能”而不是“模块”,因此无法正
我正在尝试使用 MDC 将每个 http 请求的唯一请求 ID 记录到我的资源中,以进行调试并跟踪特定请求。为此,我创建了一个自定义注释@TagRequestID。以下是日志记录请求 ID。但是我无法
我是一名优秀的程序员,十分优秀!