本文为转载学习
原文链接:
书中第三个例子(也就是第四章的例子),使用到了内存数据库,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 sqlserver这样的数据库。
这个项目我已经整理完成后,放到csdn了。
大家可以下载:(里边有完成的jar,并且可以直接运行。)