5

Q1) Spring Security に、Sprint Security ユーザー & ロール テーブルにあるすべてのユーザーとロールを一覧表示できる方法 (つまり、クラス メソッド) はありますか? (ログインしているユーザーだけを探しているわけではありません。また、特定のユーザーの権限だけを探しているわけでもありません。すべてのユーザーとすべての権限を探しています。)

Q1b) 方法がある場合、このクエリを実行しているユーザーに特別な権限が必要ですか?

(ユーザーと権限のテーブルを照会する独自の SQL ステートメントを作成することでこれをハッキングできますが、それは不必要な作業のように思え、間違いが起こりやすく、Spring Security API が壊れます。)

それが役立つ場合に備えて、私のアプリケーション コンテキストのセットアップはかなり標準的です。

<authentication-manager alias="myAuthenticationManager">
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"
            users-by-username-query="select username, password, enabled from users where users.username=?"
            authorities-by-username-query="select users.username,authority from users,authorities where users.username=authorities.username and users.username=?" />
    </authentication-provider>
</authentication-manager>

<beans:bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <beans:property name="driverClassName">
        <beans:value>com.mysql.jdbc.Driver</beans:value>
    </beans:property>
    <beans:property name="url">
        <beans:value>jdbc:mysql://XXXXX:XXXX/XXXXX</beans:value>
    </beans:property>
    <beans:property name="username">
        <beans:value>XXXXX</beans:value>
    </beans:property>
    <beans:property name="password">
        <beans:value>XXXXXX</beans:value>
    </beans:property>
</beans:bean>
4

2 に答える 2

1

Spring Securityの実装は非常に特定のタスクを解決し、ほとんどの場合、このタスクに必要なユーザーは1人だけです。Spring Securityクエリの多くには、ユーザーフィルター「whereusername =?」が含まれています。ソースをダウンロードして文字列["select]を検索することで、利用可能なすべてのクエリを簡単に確認できます。

したがって、タスクのDAOレイヤーに独自のクエリ(JDBCまたはHibernate)を作成する必要があります。

于 2012-04-13T14:10:32.060 に答える
1

いいえ - 使用しているJdbcUserDetailsManagerの API を見ると、すべてのユーザーを一覧表示したり、すべての権限を一覧表示したりする方法はありません。これを行うには、カスタム コードを記述する必要があります。

于 2012-04-13T20:53:35.630 に答える