# 关系型数据库
pac4j 允许你验证用户名/密码,并在 SQL 数据库上创建、更新和删除用户。
# 1)依赖
你需要使用以下组件:pac4j-sql
。
示例(Maven依赖项):
<dependency>
<groupId>org.pac4j</groupId>
<artifactId>pac4j-sql</artifactId>
<version>${pac4j.version}</version>
</dependency>
1
2
3
4
5
2
3
4
5
# 2)DbProfileService
DbProfileService (opens new window) 取代已弃用的 DbAuthenticator
,以:
- 验证关系数据库上的用户名/密码(可以为处理
UsernamePasswordCredentials
的 HTTP 客户端定义) - 在数据库中创建、更新或删除用户。
它与 DbProfile (opens new window) 一同工作。
它从 javax.sql.DataSource
中构建。
示例:
DataSource dataSource = JdbcConnectionPool.create("jdbc:h2:mem:test", dbuser, dbpwd);
DbProfileService dbProfileService = new DbProfileService(dataSource);
1
2
2
必须使用以下脚本创建数据库中的用户表:
CREATE TABLE users
(
id varchar(255),
username varchar(255),
password varchar(255),
linkedid varchar(255),
serializedprofile varchar(10000)
);
ALTER TABLE users
ADD PRIMARY KEY (id),
ADD KEY username (username),
ADD KEY linkedid (linkedid);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
可以通过 setUsersTable
方法更改数据库中表的名称。也可以使用 setIdAttribute
、setUsernameAttribute
和 setPasswordAttribute
方法设置 id、用户名和密码列。
可以通过两种方式在数据库中管理用户配置文件的属性:
- 或者每个属性都显式保存在特定列中,并且所有这些列都通过
setAttributes
方法定义为用逗号分隔的列名列表(这是 1.9 版中已经存在的传统模式) - 或者将整个用户配置文件序列化并保存在
serializedprofile
列中。
此 DbProfileService
支持使用特定的 PasswordEncoder 对数据库中的密码进行编码。
注意
从 3.x 系列中的 v3.9.0、4.x 系列中的 v4.2.0 和 v5.0 开始,serializedprofile
是用 JSON 编写的,而不是使用 Java 序列化。