书中第三个例子(也就是第四章的例子),使用到了内存数据库,hsql.
具体配置和使用方式如下:
这个数据库用起来很方便,但是因为数据保存在内存中,所以我们无法使用标准的工具进行查询。(这样的话,其实不是很方便的)
咱们看一下,初始化的security-scema.sql脚本:
-- 注. 所用的用户,主要存贮用户信息
create
table
users(
username varchar_ignorecase(50)
not
null
primary
key
,
password varchar_ignorecase(50)
not
null
,
enabled
boolean
not
null
);
--
注.
存储权限信息
create
table
authorities (
username varchar_ignorecase(50)
not
null
,
authority varchar_ignorecase(50)
not
null
,
constraint
fk_authorities_users
foreign
key
(username)
references
users(username));
create
unique
index
ix_auth_username
on
authorities (username,authority);
--
注.
存储组信息
create
table
groups (
id bigint generated
by
default
as
identity(start
with
0)
primary
key
,
group_name varchar_ignorecase(50)
not
null
);
--
注.
存储组权限信息
create
table
group_authorities (
group_id bigint
not
null
,
authority
varchar
(50)
not
null
,
constraint
fk_group_authorities_group
foreign
key
(group_id)
references
groups(id));
--
注.
存储组成员
create
table
group_members (
id bigint generated
by
default
as
identity(start
with
0)
primary
key
,
username
varchar
(50)
not
null
,
group_id bigint
not
null
,
constraint
fk_group_members_group
foreign
key
(group_id)
references
groups(id));
虽然我们没有专门学过hsql,但是通过普通的sql语法(一般使用sql92),我们可以看出上边脚本的大概意思。(注释是我猜的啊。。)
那么如何去连接这样的数据库,进行使用呢,:
在认证管理器中,认证提供者应该调用UserDetailService的,但是这里使用了jdb-user-service,那么,我们可能会猜到,其实这个标签的实现类就是UserDetailService的子类,我们可以查一下:
看一下,最像的就是这个了。 那我们大概先这么认为着。。
再来看另一个脚本:test-data.sql:
insert
into
users(username, password, enabled)
values
(
'admin'
,
'admin'
,
true
);
insert
into
authorities(username,authority)
values
(
'admin'
,
'ROLE_USER'
);
insert
into
authorities(username,authority)
values
(
'admin'
,
'ROLE_ADMIN'
);
insert
into
users(username, password, enabled)
values
(
'guest'
,
'guest'
,
true
);
insert
into
authorities(username,authority)
values
(
'guest'
,
'ROLE_USER'
);
commit
;
这个就不说了,基本上都可以看懂的。
那么,现在当我们启动程序时,数据初始化的工作我们就做完了。
这里只是粗略的学习了一下hsql,具体的hsql,还要通过查询相应的资料学习,不过对于学习spring security来说,看懂就可以了,后期的数据库肯定要使用想mysql sqserver这样的数据库。
这个项目我已经整理完成后,放到csdn了。
大家可以下载:
http://download.csdn.net/detail/dulei294948/6289741(里边有完成的jar,并且可以直接运行。)。