2017-09-14 73 views
2

我正在嘗試爲個人項目設置服務器。我使用帶有Neo4j圖形數據庫的ServiceStack.Core作爲持久層。帶Servicestack的自定義IUserAuthRepository

我想用我的圖形數據庫作爲用戶認證庫來設置用戶認證。據我所知,Neo4j目前沒有IUserAuthRepository的實現,這意味着我將不得不創建自己的。不幸的是,我發現這個界面上的文檔很少,以及如何正確實現它。

所以,我有幾個問題:

  • 是否存在關於如何正確地實現自己的IUserAuthRepository任何教程或其他文檔?
  • CreateUserAuth方法應該採取密碼。如果用戶使用Facebook或其他服務登錄並且沒有密碼會怎麼樣?
  • 使用Redis進行身份驗證(使用RedisAuthRepository),使用userAuthId在圖形數據庫中查找用戶會更有意義嗎?這樣做有什麼重大缺陷嗎?如果我確實走這條路線,我該如何掛鉤註冊過程,以確保我在圖形數據庫中創建一個用戶,只要註冊一個新用戶?

回答

1

目前還沒有關於實施IUserAuthRepository的文檔,它是一個很多reference implementations的接口。最簡單的方法是遵循類似於neo4j的實現。

IUserAuthRepositorystores 2 tablesUserAuth主表和UserAuthDetails子表這是所有的OAuth提供者如Facebook與他們保持身份驗證時,收到的信息。密碼字段用於CredentialsAuthProvider

您可以在Session and Auth Events註冊和驗證期間處理不同的事件。

+0

您是否碰巧知道在User Auth Repository以外的任何地方是否使用了'IUserAuth.Id','IUserAuthDetails.Id'和'IUserAuthDetails.UserAuthId'?一個自動遞增的int id在Neo4j上並不能很好地工作,原因有很多。通過UUID對UserAuth進行索引,並通過遍歷UserAuth節點的圖形到達UserAuthDetails節點會更有意義(反之亦然)。我可以通過將UserAuth.RefIdStr設置爲我的UUID並忽略所有其他Id字段來實現此目的,但我擔心其他ServiceStack代碼可能以某種方式依賴於這些Id值 – Katie