5

プロジェクトでApacheShiroを使用しています。現在、1.1.0バージョンを使用していますが、Shiroコンポーネントを最新バージョン1.2.1に移行しようとしています。しかし、dbに対してユーザー認証を行おうとすると、何らかの理由で機能せず、エラーは発生しませんが、認証は行われません。

以下は、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の統合例を使用しようとしています...

この点での助けは本当にありがたいです、そしてあなたの助けに前もって感謝します!

ありがとう&よろしく、
グプタカタカム

4

2 に答える 2

1

1.1 と 1.2 の間には、問題に影響を与える可能性のある多くの違いがあります...これが最も可能性が高いと思われるものです

  • SHIRO-178 shiro.ini が WEB-INF フォルダーにあるはずです。あなたはあなたのものを動かしましたか?

また、認証関連の変更がいくつかあります。

  1. SHIRO-23 Jsecurity と Guice の統合
  2. SHIRO-213パスワードとハッシュ管理
  3. SHIRO-279パスワードをハッシュするためのシンプルなコマンド ライン ユーティリティを作成する
  4. SHIRO-280 PasswordService を作成して、ユーザーのパスワード管理手法を自動化する
  5. SHIRO-287 Web 構成の SecurityManager が非要求スレッドに対して静的にアクセスできるようにする

最初のものだと思いますが、リリースノートの全リストは、1.2.0 についてはここに、1.2.1 についてはここにあります。

于 2012-11-06T01:00:13.933 に答える
0

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&amp;zeroDateTimeBehavior=convertToNull" />
    <property name="username" value="username" />
    <property name="password" value="passwor" />
    <property name="validationQuery" value="SELECT 1" />
</bean>

于 2013-03-17T17:37:55.670 に答える