Transactions 如何在keydape SPI扩展中编写简单的事务包装器?

Transactions 如何在keydape SPI扩展中编写简单的事务包装器?,transactions,keycloak,keycloak-services,Transactions,Keycloak,Keycloak Services,通过遵循keydove开发者指南,我试图编写一个SPI扩展,帮助将自定义用户服务(将其视为一个数据存储,其中包含一组处理用户数据的CRUD REST API)联合到keydove中 我想要实现的一个基本场景是,当新用户通过KeyClope登录时,需要通过创建用户条目将其信息传播到自定义用户服务 通过实现UserRegistrationProvider接口,我的提供者中有以下方法 @覆盖 public UserModel addUser(RealmModel领域,字符串用户名){ infov(“添

通过遵循keydove开发者指南,我试图编写一个SPI扩展,帮助将自定义用户服务(将其视为一个数据存储,其中包含一组处理用户数据的CRUD REST API)联合到keydove中

我想要实现的一个基本场景是,当新用户通过KeyClope登录时,需要通过创建用户条目将其信息传播到自定义用户服务

通过实现
UserRegistrationProvider
接口,我的提供者中有以下方法

@覆盖
public UserModel addUser(RealmModel领域,字符串用户名){
infov(“添加新用户:username={0}”,username);
用户=新用户();
//执行某些操作以使用其他属性填充用户对象,例如通过KeyClope控制台UI编辑的属性
UserModel UserModel=createAdapter(领域,用户);
返回用户模型;
}
奇怪的是,这个接口方法只接受
username
参数作为字符串。我不知道如何访问其他用户属性。我发现下面两篇关于这个问题的帖子

KeyClope团队的答复是,只有在提交事务时,事务包装才能应用于持久化更改。是LDAP联合的正式实现。是LDAP事务的源代码


但是代码部分太多了,无法阅读。如果有人能提供一种简单、简洁的实现方法,我们将不胜感激

在阅读了LDAP提供程序上KeyClope的源代码后,我发现数据持久化步骤可以发生在主事务之后的一个进程中


上面提到的存储库是我试用过的基于文件的KeyClope用户存储提供商。希望它能对此提供一些见解

嗨,我正面临着同样的挑战。你有没有写下做这个交易步骤的简单方法。我使用的是KeyClope 9.xx版。如果您有代码片段,我真的很感激。我将我的用户存储在外部数据库中mysql@Mubasher是我实施上述解决方案的地方。希望能有帮助。谢谢,它起作用了。然而,我有一个不同的问题,如果你知道的话,我需要向用户添加用户角色。有三种类型的用户可以注册。管理员、客户、经理。如何确定角色。在我的例子中,adduser方法实际上是在我实现社交登录特性时由keydape令牌exunge调用的。我从facebook提供访问令牌,并通过KeyClope验证。然后通过电子邮件检查数据库中是否存在用户。如果没有,则称为addUser。在这里,我不知道如何找到用户角色。