当前位置: 首页 > 知识库问答 >
问题:

put和post方法DropWizard-auth-jwt

魏鸿哲
2023-03-14

使用dropwizard框架实现了Resful应用程序。我使用dropwizard-auth-jwt对maven包进行身份验证:


com.github.toastshaman
dropwizard-auth-jwt
1.0.2-0

为了为资源添加身份验证,我实现了sampleAuthenticator,它是使用主体类进行身份验证检查的已实现的身份验证器类。

public class UserAuthenticate implements Authenticator &ltJwtContext, MyUser> {

    @Override
    public Optional&ltMyUser> authenticate(JwtContext context) {
        try {
            final String subject = context.getJwtClaims().getSubject();
            if ("authentication".equals(subject)) {
                return Optional.of(new MyUser("admin", "pass"));
            }
            return Optional.empty();
        }
        catch (MalformedClaimException e) { return Optional.empty(); }
    }
}

当MyUser实现主体时:

public class MyUser implements Principal {

    private  String pass;
    private  String name;

    public MyUser(String name, String pass) {
        this.pass = pass;
        this.name = name;
    }
    public MyUser( String name){
        this.name = name;
    }
    public MyUser(){}

    public String getPass() {
        return pass;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "MyUser{" +
                "pass='" + pass + '\'' +
                ", name='" + name + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        final MyUser myUser = (MyUser) o;
        return Objects.equals(pass, myUser.pass) && Objects.equals(name, myUser.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(pass, name);
    }
}

使用这种配置,我需要为crud操作添加资源。对于get和delete,没有probelm。但当我添加post或put时,需要为请求体添加新对象时,我出现了错误。

岗位:

@POST
@Path("/")
public Response create(@Auth MyUser admin, Body body) {
   return Response
           .status(Response.Status.OK)
           .type(MediaType.APPLICATION_JSON)
           .entity(true)
           .build();
}

共有1个答案

唐健
2023-03-14

jersey希望@path批注位于类级别。在这里看到我的答案:在不编写包装类的情况下解析请求参数

我不知道您使用的是哪个版本的dropwizard,但我无法将@post和@path(“/something”)注释组合在一起,以便在注释方法时进行操作。我收到HTTP错误404。

 类似资料:
  • 我不知道POST和PUT方法的确切区别。有些人在网上说,当你们更新记录的时候,你们必须使用PUT方法而不是POST,我不知道这是真的吗?? 如果你的网站URL在POST方法1.www.example。com/user/{id}/update:-使用2.www.example。com/user/update:-使用后这是否正确??

  • 唯一的GET方法一直在工作,但PUT、POST和DELETE总是出错。我尝试通过网络更新处理程序映射。也可以在IIS站点下进行配置。最初,我得到了错误的状态代码405作为方法不允许。当我将处理程序映射更改为 开始将415的错误设置为“不支持的媒体类型”。以下是我收到的回复 {StatusCode: 415, ReasonPhrase:'Unsupport Media Type', Version:

  • 问题内容: 我试图了解DropWizard中身份验证和授权的工作方式。我已经阅读了他们的身份验证指南以及GitHub上的dropwizard- security 项目,但是觉得我仍然缺少一些重要的概念。 然后在我的子类中: 然后在资源方法中: 我觉得我有这个半正确配置为基本身份验证,但不理解的角色和发挥。特别: 如何从Jersey / JAX-RS客户端设置基本身份验证用户名/密码? 什么作用,并

  • 有人知道如何扩展dropwizard界面吗?现在它只有所需的选项,但我需要为anooted方法添加权限。 例如: 我有一个用户管理员和一个普通用户。两者都可以进行身份验证并到达我的@auth带注释的资源。但我想允许一些(不是全部)http方法请求只为管理员和普通用户删除。如何在资源之外执行此操作?类似的东西

  • 我知道PUT和POST之间的主要区别是幂等性,但我想在实际的层面上理解它。 例如,假设我必须处理用户更改用户名的请求: 有哪些不同之处: 而且 你会用哪一个?

  • 本文向大家介绍HTTP提交方式之PUT详细介绍及POST和PUT的区别,包括了HTTP提交方式之PUT详细介绍及POST和PUT的区别的使用技巧和注意事项,需要的朋友参考一下 Http定义了与 服务器的交互方法,其中除了一般我们用的最多的GET,POST 其实还有PUT和DELETE   根据RFC2616标准(现行的HTTP/1.1)其实还有OPTIONS,GET,HEAD,POST,PUT,D