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

使用Spring Data REST进行密码编码

史绍晖
2023-03-14

我应该如何用Spring Data REST自动编码我的实体的Subbmissibed纯密码字段?

@Entity
public class User {
  @NotNull
  private String username;
  @NotNull
  private String passwordHash;
  ...
  getters/setters/etc
  ...
}
@HandleBeforeSave
protected void onBeforeSave(User user) {
    if (user.getPassword() != null) {
        account.setPassword(passwordEncoder.encode(account.getPassword()));
    }
    super.onBeforeSave(account);
}

在setter方法上使用@projection和SpEL是可能的吗?

共有1个答案

巩衡
2023-03-14

您可以实现Jackson JSONDeserializer:

public class BCryptPasswordDeserializer extends JsonDeserializer<String> {

    public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        ObjectCodec oc = jsonParser.getCodec();
        JsonNode node = oc.readTree(jsonParser);
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        String encodedPassword = encoder.encode(node.asText());
        return encodedPassword;
    }
}

并将其应用于您的JPA实体属性:

// The value of the password will always have a length of 
// 60 thanks to BCrypt
@Size(min = 60, max = 60)
@Column(name="password", nullable = false, length = 60)
@JsonDeserialize(using = BCryptPasswordDeserializer.class )
private String password;
 类似资料:
  • 我正在尝试找到一种使用私钥加密字符串并使用公钥解密它的方法。我使用OpenSSL生成密钥,如下所述: http://www.akadia.com/services/ssh_test_certificate.html 这就是我目前拥有的 然而,在< code>ImportPublicKey方法上,我得到一个异常< code>ASN1损坏数据 传递给该方法的字符串具有以下格式: @“MIICXWIBA

  • 我试图防止CRLF注入(在用户输入很少的url中),并试图对url中的用户输入进行编码。我知道我也可以使用输入验证,但如果我使用ESAPI编码器,它是否有相应的解码器?如果它有,那么它是什么?如果不是,那么可以做什么来执行相同的编码和解码?

  • Java为URL编码字符串提供了类。但是将密码存储为字符串被认为是不安全的。通过输出流通过POST发送密码的代码是否足够安全? 一方面,它在使用字符串。另一方面,这些字符串只有1个字符长,编码后在概念上是相同的。而且,在我看来,这可能会在多字节字符上失败。攻击者是否能够在内存中找到这些1-char字符串并重建原始密码?有没有更好的办法做到这一点?

  • 我在服务器端对JSON进行了编码(使用ESAPI编码器),然后客户机检索bean的字段并进行进一步的处理。 在服务器端 编码的JSON字符串 \x7b\x22name\x22\x3a\x22sameer\x22,\x22company\x22\x3a\x22company\x22,\x22designation\x22\x3a\x22developer\x22\x7d 在客户端

  • 问题内容: 我正在尝试使用spring的UriComponentsBuilder为oauth交互生成一些url。查询参数包括诸如回调URL和其中带有空格的参数值之类的实体。 尝试使用UriComponentBuilder(因为现在已弃用UriUtils) 不幸的是,虽然scope参数中的空格已成功用’+’替换,但redirect_uri参数根本没有经过url编码。 例如, 应该已经结束了 但是没有

  • 问题内容: 我正在尝试使用请求获取正确的编码。 不管我做什么,丹麦字符的编码都不对。 有什么想法吗? 问题答案: 也许您的麻烦在于标题。假设您的标题为 如果是这样,您有2种方法可以解决此问题: 删除此标题 使用以下代码解压缩数据: });