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

标签 java ini shiro

我正在使用 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/

相关文章:

java - 如何将数据库写入和电子表格写入分组为单个 "transaction"

python - 如何在 Python 中从 etc/sysconfig 中检索值

Python ConfigParser 到 C++

java - Autowiring 类时出现空指针异常

java - 如何从 netbeans 远程调试 jar

java - 在排序列表中找到最近/最接近的值

python - 使用 ConfigParser Python 更改 ini 文件中的值

spring - 我可以在 Apache Shiro 安全注释中使用表达式吗?

grails - 限制对 java-melody 监控 url 的访问

java - 当选择未更改时触发 Spinner 事件