4

私はSpringのセキュリティを学ぶためにさまざまなことを試してきました。「ユーザー」テーブルと「権限」テーブルを持つ基本構造の承認を設定しました。したがって、私の認証プロバイダーは次のようになります。

    <authentication-provider>
        <password-encoder hash='md5'>
            <salt-source user-property="username"/>
        </password-encoder> 
        <jdbc-user-service data-source-ref="dataSource"/>
    </authentication-provider>

このように、デフォルトのデータベース スキーマを使用するため、ユーザーの詳細を取得するためのクエリを指定しません。したがって、「ユーザー名ごとの権限」属性を使用していませんが、Spring はデフォルトのクエリを使用しています (「ユーザー名 = ? の権限からユーザー名、権限を選択」および「ユーザー名 = ? のユーザーから有効なユーザー名、パスワードを選択」)。 ") それで、物事はうまくいっています。

次に、権限グループを試してみたいと思います。そのため、スキーマに従ってテーブルを作成します。グループ権限を有効にする方法を教えてください。JdbcDaoImpl の API ドキュメントには、「enableGroups」プロパティを使用して「グループベースの権限」を有効にするよう記載されています。しかし、「グループベースの権限」にはそのようなプロパティはありません。Spring にはデフォルトのクエリがあるので、明示的に指定する必要はないと思います。

それで、誰かがここで私を助けて、デフォルトのクエリでグループベースの権限を有効にすることができます.

4

1 に答える 1

5

残念ながら、jdbc-user-serviceはenableGroupsプロパティへのアクセスを提供していません。そのため、Spring の Bean 名前空間を使用して、この Bean を手動で構成する必要があります。次のようなことを試すことができると思います:

<authentication-provider user-service-ref="jdbcDaoImpl">
    <password-encoder hash='md5'>
        <salt-source user-property="username"/>
    </password-encoder> 
</authentication-provider>


<beans:bean id="jdbcDaoImpl" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
    <property name="enableGroups" value="true" />
    <property name="enableAuthorities" value="false" />
    <property name="dataSource" ref="dataSource" />
</beans:bean>    
于 2013-03-18T14:14:07.710 に答える