morphia-custom字段,带有自定义读写器

pvcm50d1  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(317)

我想添加一个具有默认行为的自定义字段类型。我的目的是处理所有类型的秘密字段:
例如:我在user类上有password字段,我希望password字段以某种方式加密,所以不要:

@Entity
    public static class User {
        String name;
        String pwd;
        String pwdToken
        public User() {
        }
        public User( string name, string password ) {
            super();
            this.pwd = password;
        }
    }

然后从外部服务或控制器管理解密和加密
我想要这样的东西:

@Entity
    public static class User {
        String name;
        SecretField pwd;

        public User() {
        }
        public User( string name, string password ) {
            super();
               this.name = name;
            // this.pwd.set(password)
        }
    }

   public final class SecretField implements Serializable {

      private static final long serialVersionUID = 1L;

      private String encryptedContent;
      private String token;

     public SecretField(String content) {
               this.token = generateToken();
               this.encryptedContent = decrypt(content, this.token);
     }

     // when especially called the decrypted pwd will be returned
     public decrypt(){
        decrypt(encryptedContent, token)
     }  

     //here I should override the default output object - return this.encryptedContent instead of whole object
     //???

   }

这样,每次我有一个秘密字段,我就可以使用这个类和加密将自动完成,我将不需要在每个控制器上单独管理。在更新和插入时,密码将作为解密字符串从客户端发送,在获取时返回加密字符串。
莫菲娅有可能吗?

ha5z0ras

ha5z0ras1#

您可以在2.0中编写一个自定义编解码器来为您实现这一点。在此之前,您可以编写一个生命周期事件处理程序来实现这一点。相关文件可在https://morphia.dev

相关问题