# CouchDB

pac4j 允许你验证用户名/密码,并在 CouchDB 数据库上创建、更新和删除用户。

# 1)依赖

你需要使用以下模块:pac4j-couch

示例(Maven依赖项)

<dependency>
    <groupId>org.pac4j</groupId>
    <artifactId>pac4j-couch</artifactId>
    <version>${pac4j.version}</version>
</dependency>
1
2
3
4
5

# 2)CouchProfileService

CouchProfileService (opens new window) 允许你能用于:

  • 验证 CouchDB 数据库上的用户名/密码(它可以定义为处理 UsernamePasswordCredentials 的 HTTP 客户端的认证器)
  • 在 CouchDB 数据库中创建、更新或删除用户。

它与 CouchProfile (opens new window) 一同工作。

它从 org.ektorp.CouchDbConnecto 构建。

示例

HttpClient httpClient = new StdHttpClient.Builder().url(couchDbUrl).build();
CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
CouchDbConnector couchDbConnector = dbInstance.createConnector("users", true);
CouchProfileService couchProfileService = new CouchProfileService(couchDbConnector);
1
2
3
4

数据库名称的选择与 CouchProfileService 无关。包含用户的数据库必须包含以下设计文档:

{
	"_id": "_design/pac4j",
	"language": "javascript",
	"views": {
		"by_username": {
			"map": "function(doc) {if (doc.username) emit(doc.username, doc);}"
		},
		"by_linkedid": {
			"map": "function(doc) {if (doc.linkedid) emit(doc.linkedid, doc);}"
		}
	}
}
1
2
3
4
5
6
7
8
9
10
11
12

可以使用 setIdAttributesetUsernameAttributesetPasswordAttribute 方法更改 id、用户名和密码属性名称。默认情况下,id 属性是 CouchDB 的 _id 属性。如果更改 usernamelinkedid 属性,请相应地更改设计文档。你还可以使用 getObjectMapper()setObjectMapper() 获取/设置用于从 CouchDB 序列化 JSON 数据的 ObjectMapper,默认值只是新的 ObjectMaper()

可以通过两种方式在 CouchDB 集合中管理用户配置文件的属性:

  • 每个属性都显式保存在特定属性中,并且所有这些属性都通过 setAttributes 方法定义为用逗号分隔的名称列表(这是自 1.9 版以来存在的传统模式)
  • 或者将整个用户配置文件序列化并保存在 serializedprofile 属性中。

注意

从 3.x 系列中的 v3.9.0、4.x 系列中的 v4.2.0 和 v5.0 开始,serializedprofile 是用 JSON 编写的,而不是使用 Java 序列化。

原文链接 (opens new window)