Tigase 自定义数据库
Posted
技术标签:
【中文标题】Tigase 自定义数据库【英文标题】:Tigase Custom Database 【发布时间】:2019-08-30 04:09:28 【问题描述】:我正在尝试集成 Tigase 以使用我的自定义 mysql 数据库来验证用户、获取名册和 vCard。我按照https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication 的描述设置了“自定义身份验证连接器”,但是,它似乎只对我已经添加到本地 Tigase 数据库的用户进行身份验证。 Tigase 是否可以在用户成功通过身份验证后自动创建用户?而且,如何设置 Tigase 以从我的自定义数据库中获取用户的名册和/或 vCard?
我已尝试按照https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication 中的说明设置“自定义身份验证连接器”,但是,对于仅存在于我的自定义数据库中的用户,它允许登录,但在我尝试创建房间时抛出错误或将用户添加到我的名册中,如“tigase.db.UserNotFoundException:用户不存在”和“警告:数据包的 NotAuthorizedException”。
这是我使用的基于https://docs.tigase.net/tigase-server/8.0.0/Administration_Guide/html/#customAuthentication的配置:
authRepository
default ()
cls = 'tigase.db.jdbc.TigaseCustomAuth'
'data-source' = 'db-custom'
'conn-valid-query' = 'select 1'
'user-account-status-query' = 'select onlineStatus AS account_status from tbl_contacts where id = ?'
'user-login-query' = "select vUserId AS user_id from tbl_contacts where vUserId = ? AND vPassword = ?"
我希望能够将 Tigase 与我的自定义数据库集成,以便它从我的数据库中进行身份验证、获取名册和 vcard 信息。
【问题讨论】:
【参考方案1】:您的问题的答案:“Tigase 是否可以在用户成功通过身份验证后自动创建用户”实际上在链接文档中得到了回答:
要使用户帐户在身份验证数据库和主用户数据库之间保持同步,您必须在数据库连接 URL 的末尾添加以下选项:
autoCreateUser=true
目前仅通过更改/调整配置无法从自定义存储库中检索用户数据。
如果您想使用自己的数据库完全管理用户,那么您必须自己实现UserRepository 接口(您可以查看JDBCRepository 实现以了解如何去做)
【讨论】:
感谢 Wojtek,我一定错过了某个地方的 autoCreateUser。关于 JDBCRepository,谢谢,我现在看看。以上是关于Tigase 自定义数据库的主要内容,如果未能解决你的问题,请参考以下文章
Tigase、Openfire 和任何其他开源 XMPP 服务器之间的比较