为 JDBC 连接配置 shiro.ini

Posted

技术标签:

【中文标题】为 JDBC 连接配置 shiro.ini【英文标题】:Configure shiro.ini for JDBC connection 【发布时间】:2016-04-10 19:48:54 【问题描述】:

作为我新年学习新技术计划的一部分,我开始使用 Apache Shiro 安全框架。

我设法获得了在 shiro.ini 文件中存储用户名、密码和角色的基本示例,但是当我修改我的 shiro.ini 文件以使用 JDBC 时,它就停止了工作。现在,在尝试访问我的应用程序时,我不断收到输入用户名和密码的提示。我尽量保持简单(密码甚至没有散列)。

下面是我的 shiro.ini 文件,有人知道我做错了什么吗?

[main]
authc.usernameParam = j_username
authc.passwordParam = j_password
authc.failureKeyAttribute = shiroLoginFailure

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true

jdbcRealm.authenticationQuery = "SELECT password FROM user WHERE username = ?"
jdbcRealm.userRolesQuery = "SELECT role FROM user WHERE username = ?"

ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
ds.serverName = localhost
ds.user = root
ds.password = password
ds.databaseName = database
jdbcRealm.dataSource = $ds

# Use Built-in Chache Manager
builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
securityManager.cacheManager = $builtInCacheManager

securityManager.realms = $jdbcRealm

[users]
[roles]
[urls]
/* = authcBasic

【问题讨论】:

您可以尝试从查询中删除引号吗? 【参考方案1】:

如果您不提供权限查询,那么最好禁用权限查询。另外,如果您想使用基本身份验证,为什么要使用 authc 属性。

尝试关注

    [main]
    #authc.usernameParam = j_username
    #authc.passwordParam = j_password
    #authc.failureKeyAttribute = shiroLoginFailure

    jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
    jdbcRealm.permissionsLookupEnabled = false

    jdbcRealm.authenticationQuery = SELECT password FROM user WHERE username = ?
    jdbcRealm.userRolesQuery = SELECT role FROM user WHERE username = ?

    ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    ds.serverName = localhost
    ds.user = root
    ds.password = password
    ds.databaseName = database
    jdbcRealm.dataSource = $ds

    # Use Built-in Chache Manager
    builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
    securityManager.cacheManager = $builtInCacheManager

    securityManager.realms = $jdbcRealm

    [users]
    [roles]
    [urls]
    /* = authcBasic

【讨论】:

以上是关于为 JDBC 连接配置 shiro.ini的主要内容,如果未能解决你的问题,请参考以下文章

Shiro学习

Shiro.ini 文件配置但在 Java 类中?

Shiro ini配置

Jmeter在java代码中创建JDBC连接配置实例

如何通过 Jmeter 中的系统变量设置 jdbc 连接配置

使用JDBC-ODBC连接Access数据库