2012-10-15 85 views
4

我在我的項目中使用Apache Shiro。目前我正在使用1.1.0版本,現在我試圖將Shiro組件遷移到最新版本1.2.1。但是當我嘗試對數據庫進行用戶身份驗證時,由於某種原因,這種身份驗證不起作用,而且我沒有收到任何錯誤,但身份驗證沒有發生。使用shiro對數據庫進行身份驗證1.2.1

以下是我在shiro.ini文件中給出的數據庫詳細信息。

[main] 
cacheManager = com.cacheManager.ShiroCacheManager 
securityManager.cacheManager = $cacheManager 

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

jdbcRealm.authenticationQuery = select user_pass from users where user_name = ? 
jdbcRealm.userRolesQuery = select role_name from user_roles where user_name = ? 

ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
ds.serverName = 192.168.0.75 
ds.port = 3306 
ds.user = test 
ds.databaseName = appfuse 
jdbcRealm.dataSource = $ds 

但仍然沒有打到數據庫。我正在使用tomcat服務器,並試圖使用guice和shiro整合的例子...

在這方面的任何幫助,真的很感激,並提前感謝您的幫助!

感謝&問候,
古普塔Katakam

+1

您是否收到任何特定錯誤?你能分享一下嗎?如果您刪除緩存管理器會發生什麼情況? – jbunting

回答

1

有一些事情1.1和1.2之間的不同,可能會影響您的問題...這裏是一個我認爲是最有可能

  • SHIRO-178 shiro.ini現在應該位於WEB-INF文件夾中。你有沒有移動你的?

此外,還有一些身份驗證有關的變化:

  1. SHIRO-23與吉斯集成Jsecurity
  2. SHIRO-213密碼和哈希管理
  3. SHIRO-279創建一個簡單的命令行實用程序來散列密碼,
  4. SHIRO-280創建一個PasswordService以自動執行用戶密碼管理技術
  5. SHIRO-287啓用網絡配置的安全管理器是用於非請求的線程

我想這是第一個,但entire list of release notes can be found here爲1.2.0和here for 1.2.1

0

靜態訪問如果您正在使用的彈簧,使用此

創建數據庫ACCESSDB

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> 
    <property name="securityManager" ref="securityManager" /> 
    <property name="loginUrl" value="/login" /> 
    <property name="successUrl" value="/homePage" /> 
    <property name="unauthorizedUrl" value="/unauthorized" /> 
    <property name="filters"> 
     <util:map> 
      <entry key="authc"> 
       <bean class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter" /> 
      </entry> 
     </util:map> 
    </property> 
    <property name="filterChainDefinitions"> 
     <value> 
      /favicon.ico = anon 
      /assets/** = anon 
      /** = authc 
     </value> 
    </property> 
</bean> 

<bean id="shiroCacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> 
    <property name="cacheManagerConfigFile" value="classpath:ehcache.xml"></property> 
</bean> 

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
    <property name="cacheManager" ref="shiroCacheManager" /> 
    <property name="realm" ref="myRealm" /> 
</bean> 
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" /> 

<bean id="myRealm" class="org.apache.shiro.realm.jdbc.JdbcRealm"> 
    <property name="dataSource" ref="shiroDatasource" /> 
    <property name="permissionsLookupEnabled" value="true" /> 
</bean> 

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="shiroDatasource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" 
     value="jdbc:mysql://localhost:3306/accessdb?autoReconnect=true&amp;zeroDateTimeBehavior=convertToNull" /> 
    <property name="username" value="username" /> 
    <property name="password" value="passwor" /> 
    <property name="validationQuery" value="SELECT 1" /> 
</bean> 

相關問題