gpt4 book ai didi

java - Dropwizard 具有 DynamicFeature 的自定义授权过滤器

转载 作者:行者123 更新时间:2023-12-01 09:34:15 24 4
gpt4 key购买 nike

我已按照以下链接中 pandadb 的回答中给出的所有步骤进行操作 How to Optionally Protect a Resource with Custom Dropwizard Filter

我将自定义注释添加到资源方法中,但自定义授权过滤器未被调用。

谁能告诉我我可能错过了什么。

更新:- 我正在使用 dropwizard 1.0 使用 java8 并使用 maven 构建应用程序。

最佳答案

首先检查this Dropwizard Feature exampleDropwizard 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com