Аутентификация по базе данных с использованием shiro 1.2.1
Я использую Apache Shiro в своем проекте. В настоящее время я использую версию 1.1.0 и сейчас пытаюсь перенести компоненты 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...
Любая помощь в этом отношении очень ценится и заранее спасибо за вашу помощь!
С уважением,
Гупта Катакам
2 ответа
Есть несколько разных вещей, которые могут повлиять на вашу проблему между 1.1 и 1.2... вот что я думаю, наиболее вероятно
- SHIRO-178 shiro.ini теперь должен находиться в папке WEB-INF. Вы двигали свой?
Кроме того, существует ряд изменений, связанных с аутентификацией:
- SHIRO-23 Интеграция Jsecurity с Guice
- SHIRO-213 Управление паролями и хэшами
- SHIRO-279 Создайте простую утилиту командной строки для хэширования паролей
- SHIRO-280 Создать PasswordService для автоматизации методов управления паролями пользователей.
- SHIRO-287 Включить статически доступный SecurityManager с веб-интерфейсом для потоков без запросов
Я думаю, что это первый, но полный список заметок о выпуске можно найти здесь для 1.2.0 и здесь для 1.2.1
Если вы используете Spring, чем использовать это
создать базу данных 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&zeroDateTimeBehavior=convertToNull" />
<property name="username" value="username" />
<property name="password" value="passwor" />
<property name="validationQuery" value="SELECT 1" />
</bean>