2

ServiceStack の Authorization 機能を調査しており、Couchbase をデータ ストアとして使用したいと考えています。Couchbase 用の IUserAuthRepository 実装がないことはわかっているので、独自に開発する必要がありますが、これは問題ではありません。

私が抱えている問題は、組み込みの UserAuth オブジェクトをそのまま保存すると、CB は Id フィールドをドキュメント識別子として使用することです。これは問題です。識別子はオブジェクト タイプ固有である必要があるためです。そうしないと、異なるオブジェクト間の ID の競合を防ぐために別の「バケット」が必要になります。必要がない限り、たくさんのバケツを持ちたくありません。

私の好みは、ドキュメントIDをオブジェクトのタイプとオブジェクト固有の識別子に設定することです。

例:ID「UserAuth_1234」またはユーザー名「UserAuth_MikeGoldsmith」を使用

異なるアプリケーション オブジェクトにバケットを再利用しようとする私の仮定は有効ですか、それともオブジェクト タイプ / 名前空間ごとのバケットについて考えるべきですか?

Couchbase と ServiceStack のどちらの愛好家からも、どんな方向性も歓迎されます。

ありがとう

追加情報

わかりましたので、ジョンの答えから、オブジェクトタイプの追加のプロパティが有効であると仮定します。

Mythz がBootStrapApiの例でカスタム プロパティを拡張することを提案しているこの投稿を見つけました。ただし、私には、が 2 回永続化されているように見えます。最初は として、再びオブジェクトとして (両方とも を使用しています)。私は正しいですか?AuthUserAuthUserAuthUserUserOrmLiteAuthRepository

本質的には、SS 認証機能を利用したいのですが、Couchbase に保存される POCO オブジェクトを制御します。これが可能であれば誰かが指示を与えることができますか?もしそうなら、私は何を実装/フックする必要がありますか?

のCouchbaseバージョンを実装しようとしましたIUserAuthRepositoryが、UseAuth具象型を使用しているため、独自のオブジェクトを使用できません。

OnAuthenticatedのメソッドにもフックしようとしましたAuthUserSessionが、この時点でUserAuthPOCO は register を使用して永続化されていますIUserAuthRepository

CredentialsAuthProviderユーザー名/パスワード認証が必要なだけなので、喜んで使用します。後でさらに追加することができます。

再度、感謝します!

4

2 に答える 2

2

バケットは、リレーショナルの世界のデータベースに大まかに似ているため、通常、バケットをアプリケーション オブジェクトにマップするべきではありません。私は ServiceStack の認証機能に詳しくありませんが、意味のあるプレフィックス付きのキーを使用するというあなたの提案は合理的であり、ドキュメント分類を提供するための一般的なアプローチです。

Couchbase では、「id」または「key」フィールドと見なされるフィールドがドキュメントにないことに注意してください。ドキュメントの保存に使用されるキーはメタデータで使用できますが、JSON ドキュメント自体の一部ではありません。したがって、ビューを利用できる場合は、type 属性を使用してドキュメントを保存し、id 以外のプロパティでクエリを実行することもできます。つまり、キー値のキーは、ユーザー認証ドキュメントを取得する方法である必要はありません。

また、ビューにドキュメントの分類法を提供する方法としてキーのプレフィックスを使用する開発者もいるため、上記のキー パターンでも機能します。私の好みは型プロパティですが、それはあなたの提案よりも有効ではありません。

于 2013-02-12T16:03:00.693 に答える
1

ServiceStackのユースケースの例に出くわしました。カスタム認証の問題に直接対処する例があります。

メソッドをオーバーライドして、TryAuthenticateCouchbaseに戻る独自のUserRepositoryを使用することができました。

于 2013-02-13T16:07:14.510 に答える