spring-security - 如何在 Spring Security 应用程序中列出*所有*用户和*所有*权限

标签 spring-security

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>

最佳答案

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

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

关于spring-security - 如何在 Spring Security 应用程序中列出*所有*用户和*所有*权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142107/

相关文章:

java - Spring Security 在尝试注销时返回 302

java - OAuth2 全局方法安全性

spring-security - spring security client_credentials grant_type - 支持刷新 token

java - 在后端使用 firebase + spring 登录

java - 带有 DelegatingFilterProxy 的 Spring Security

java - 无法使用 spring security 登录 Rest API

java - 如何在Spring mvc登录中更改登录成功Url

java - Kerberos/Spring Security/IE/Active Directory 出现 "Defective token detected"错误(NTLM 而非 Kerberos)

java - 在 Spring Security 中实现 UserDetails 和 CredentialsContainer

java - 为什么默认的Spring Security策略是AffirmativeBased?