如何在Spring Security应用程序中列出* all * users和* all *权限

时间:2012-04-13 13:50:24

标签: spring-security

Q1)Spring Security中是否有一种方法(即类方法)允许您列出所有 Sprint安全性用户和用户中的用户和角色。角色表? (我不是只寻找登录用户;而且我不只是寻找给定用户的权限。我正在寻找所有用户和所有权限。)

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>

2 个答案:

答案 0 :(得分:0)

Spring Security实现解决了非常具体的任务,在大多数情况下,此任务只需要一个用户。因此,许多Spring Security查询都包含用户过滤器“where username =?”。您可以通过下载源并搜索字符串[“select]。

轻松检查所有可用查询

因此,您应该在DAO层中为自己的任务编写自己的查询(JDBC或Hibernate)。

答案 1 :(得分:0)

否 - 查看您正在使用的JdbcUserDetailsManager的API,没有方法可以列出所有用户或列出所有权限。您需要编写自定义代码才能执行此操作。