2017-10-04 51 views
0

驗證用戶是否可以使用API​​,而不是按照用戶身份驗證的SQL查詢中的Openfire性質:
jdbcAuthProvider.passwordSQL:SELECT用戶名FROM chat_authentication其中username =?使用API​​,而不是SQL查詢中的Openfire

基本上,在我們的MySQL數據庫chat_authentication表不正常,因此某些用戶的條目不存在於表中。所以我想直接打到API(故障率很低)。在這種情況下我怎麼能做到這一點?

回答

1

你必須創建自己的類來代替Openfire的DefaultAuthProvider.class

燦的樣子:

import org.jivesoftware.openfire.auth.AuthProvider 
public class MyAuthProvider implements AuthProvider 

,正確實現了所有的方法。

作爲替代,你可以延伸的DefaultAuthProvider並覆蓋所有的方法

  • 公共無效身份驗證(字符串用戶名,字符串密碼)拋出UnauthorizedException
  • 公共無效身份驗證(字符串username,字符串令牌,字符串摘要)拋出未授權的異常
  • getPassword(String)
  • public boolean checkPassword(String username,String testPassword)throws UserNotFoundException
  • public void setPassword(String username,String password)。

最後,讓你的類的罐子,在openfireDirectory/lib部署,並與您MyAuthProvider全名更改的屬性

provider.auth.className 

值。 你可以做到這一點

  • 通過管理控制檯面板 - >服務器 - >系統屬性
  • 或數據庫更新OfProperty表。

之後,您必須關閉並啓動Openfire。

+0

但是爲此:1.我必須瞭解整個JDBCAuthProvider類,以便正確理解。 2. JDBCAuth中的用戶創建方法怎麼樣? –

+0

這可能是另一種方式,更復雜。只需檢查Openfire的源代碼,解釋的時間真的很長,但在源代碼中有很多註釋和很多使用的屬性(jdbcAuthProvider.xyz) – MrPk

相關問題