返回匹配用户名的一个或更多的用户。只有返回的第一个用户被使用。
Username (string)
Password (string)
Enabled (Boolean)
authoritiesByUsernameQuery
返回用户被直接授予的权限。一般在GBAC禁用时,被使用。
Username (string)
Granted Authority
(string)
groupAuthoritiesByUsernameQuery
返回用户作为组成员被授予的权限和组的详细信息。在GBAC功能启用时,被使用。
Group Primary Key
(any)
Group Name (any)
Granted Authority
(string)
要注意的是,在一些场景中返回的列在默认的JdbcDaoImpl实现中并没有用到,但我们依旧需要将这些值返回。在进入下一章节前,请花费一点时间尝试写一下基于前面数据库图表中的查询语句。
配置JdbcDaoImpl来使用自定义的SQL查询
给不规范的数据库使用自定义SQL查询,我们需要在Spring Bean的配置文件中修改JdbcDaoImpl的属性。要注意的一点是,为了给JdbcDaoImpl配置JDBC查询,我们不能使用
Xml代码
class="com.packtpub.springsecurity.security.CustomJdbcDaoImpl"> 1 FROM USER_INFO WHERE LOGIN = FROM USER_INFO U JOIN USER_GROUP UG on U.USER_INFO_ID = UG.USER_INFO_ID JOIN GROUP G ON UG.GROUP_ID = G.GROUP_ID JOIN GROUP_PERMISSION GP ON G.GROUP_ID = GP.GROUP_ID JOIN PERMISSION P ON GP.PERMISSION_ID = P.PERMISSION_ID WHERE U.LOGIN =
这是Spring Security从已存在且不符合默认schema的数据库中读取设置时,唯一需要配置的地方。需要记住的是,在使用已存在的schema时,通常会需要扩展JdbcDaoImpl以支持修改密码、重命名用户账号以及其他的用户管理功能。
如果你使用JdbcUserDetailsManager来完成用户管理的任务,这个类使用了大约20个可配置的SQL查询。请参考Javadoc或源码来了解JdbcUserDetailsManager使用的默认查询。