2016-01-06 92 views
0

由于我新的一年的学习我已经开始与Apache四郎安全框架乱搞新技术计划的一部分。配置shiro.ini JDBC连接

我设法得到它存储的用户名,密码,角色在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 
+0

你可以尝试从您的查询删除引号? – Wouter

回答

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