gpt4 book ai didi

java - 将值传递给 Shiro ini 中的枚举属性

转载 作者:搜寻专家 更新时间:2023-11-01 03:08:20 26 4
gpt4 key购买 nike

我正在使用 JDBC 领域并将身份验证数据存储在 SQL 中。我将盐存储在用户表中并依赖于 DEFAULT_SALTED_AUTHENICATION_QUERY。要调用该查询,我必须设置 SaltStyle。

因此,我需要通过INI将SaltStyle.COLUMN枚举值传递给JdbcRealm。

SaltStyle 不是类,所以我无法创建引用

无论我通过什么都会产生这个错误 = org.apache.shiro.config.UnresolveableReferenceException:

无法从广泛的搜索或文档中的引用中找到示例。非常感谢任何帮助。

#====================================================================
# Shiro INI configuration
#
# ===================================================================
[main]
JdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
JdbcRealm.permissionsLookupEnabled = true
sha256Matcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher
sha256Matcher.hashAlgorithmName=SHA-256
sha256Matcher.hashIterations=1
JdbcRealm.credentialsMatcher = $sha256Matcher
JdbcRealm.saltStyle= enum expression needed here

这里是JdbcRealm中的属性

public void setSaltStyle(SaltStyle saltStyle) {
this.saltStyle = saltStyle;
if (saltStyle == SaltStyle.COLUMN && authenticationQuery.equals
(DEFAULT_AUTHENTICATION_QUERY)) {
authenticationQuery = DEFAULT_SALTED_AUTHENTICATION_QUERY;
}
}

最佳答案

我的理解是目前(Shiro 1.2)你不能在 shiro.ini 中配置 ENUM 值,参见 this .
但是,您可以在调用领域相关方法(如登录)的 Java 代码中执行此操作。我在我的 servlet init() 中做了如下操作:

public class AuthManager extends HttpServlet {
protected SaltStyle saltStyle = SaltStyle.COLUMN;
// set remaining fields...
public void init() throws ServletException {
Collection<Realm> realms=((RealmSecurityManager) securityManager).getRealms();
CustomJdbcRealm jdbcRealm=(CustomJdbcRealm)realms.toArray()[0];
jdbcRealm.setSaltStyle(saltStyle);
}

关于java - 将值传递给 Shiro ini 中的枚举属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877518/

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