gpt4 book ai didi

java - 使用参数初始化时注入(inject)的PasswordHash总是抛出空指针

转载 作者:行者123 更新时间:2023-12-02 02:25:08 26 4
gpt4 key购买 nike

使用参数初始化注入(inject)的PasswordHash实例时,总是会抛出空指针异常。

在网上使用几个不同的例子,我总是得到相同的结果。这是我遵循的最新示例:https://medium.com/@swhp/explore-hash-feature-on-java-ee-security-jsr-375-soteria-7fe3b1953785 。IDE 表示注入(inject)的 Pbkd2PasswordHash 具有“不满足的依赖关系:没有 bean 与注入(inject)点匹配”。这是有道理的,因为它是一个接口(interface),我不会使用该接口(interface)创建一个新类。但是,我在网上看到的所有示例都注入(inject)了此类,但没有实现它。

如果我实现PasswordHash或PBkdf2PasswordHash接口(interface)并重写这些方法,我就能够避免空指针,但这违背了使用特定迭代、算法、盐大小和/或 key 大小值传递参数的目的.

@Inject
Pbkdf2PasswordHash pbkdfHash;

@PostConstruct
public void init() {
Map<String, String> parameters = new HashMap<>();

parameters.put("Pbkdf2PasswordHash.Iterations", "3072");
parameters.put("Pbkdf2PasswordHash.Algorithm", "PBKDF2WithHmacSHA512");
parameters.put("Pbkdf2PasswordHash.KeySizeBytes", "64");
parameters.put("Pbkdf2PasswordHash.SaltSizeBytes", "64");

this.pbkdfHash.initialize(parameters);
}

我希望当我用参数初始化注入(inject)的PasswordHash时,实例将自动对传入的文本进行哈希处理。因为看起来我没有注入(inject)任何bean并且我只是注入(inject)一个接口(interface),所以它只在以下情况下返回一个空指针:实例已初始化。

最佳答案

Glassfish 和 Wildfly 提供了一种实现,即 Pbkdf2PasswordHashImpl。我需要添加 wildfly-ee-security 或 org.glassfish.soteria:javax.security.enterprise 来引入此类。我怀疑我正在查看的示例本身实现了 PasswordHash 接口(interface),但没有显示 bean。

感谢 Siliarus 提供 Soteria 实现的链接: https://github.com/javaee/security-soteria/blob/master/impl/src/main/java/org/glassfish/soteria/identitystores/hash/Pbkdf2PasswordHashImpl.java

我现在遇到了有关所需依赖项的构建错误,但这超出了这个问题的范围。如果您有兴趣,已经有一个 Unresolved 问题: https://github.com/eclipse-ee4j/soteria/issues/193

关于java - 使用参数初始化时注入(inject)的PasswordHash总是抛出空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57257839/

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