《Spring Security3》第四章第二部分翻译(JdbcDaoImpl的高级配置)(二)

2014-11-24 01:45:20 · 作者: · 浏览: 1
ersByUsernameQuery

返回匹配用户名的一个或更多的用户。只有返回的第一个用户被使用。

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查询,我们不能使用声明。必要要明确实例化这个bean,如同我们在自定义JdbcDaoImpl实现时所作的那样:

Xml代码

class="com.packtpub.springsecurity.security.CustomJdbcDaoImpl">

SELECT LOGIN, PASSWORD,

1 FROM USER_INFO WHERE LOGIN =

SELECT G.GROUP_ID, G.GROUP_NAME, P.NAME

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使用的默认查询。