我想添加一个具有默认行为的自定义字段类型。我的目的是处理所有类型的秘密字段:
例如:我在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
//???
}
这样,每次我有一个秘密字段,我就可以使用这个类和加密将自动完成,我将不需要在每个控制器上单独管理。在更新和插入时,密码将作为解密字符串从客户端发送,在获取时返回加密字符串。
莫菲娅有可能吗?
1条答案
按热度按时间ha5z0ras1#
您可以在2.0中编写一个自定义编解码器来为您实现这一点。在此之前,您可以编写一个生命周期事件处理程序来实现这一点。相关文件可在https://morphia.dev