1

これを実装する方法についてのフィードバックを探していました。

私のシステムには、ユーザーと管理者という 2 種類の認証が必要なユーザーがいます。彼らが実行するタスクと、私が保存している彼らに関するデータは、それぞれが情報/認証情報を保存する個別のデータベース テーブルを持っていることを保証します。

でユーザーを認証するワーキングCredentialsAuthProviderコールを実装しました。ロジックは、データベース内のテーブルをチェックして認証します。ここで、管理者を認証するために、2 番目の呼び出しを実装し、それぞれを別のルートに登録する必要があります。UserCredentialsProvider/auth/credentialsUserCredentialsAuthProviderAdminCredentialsAuthProvider/user/auth/credentials/admin/auth/credentialsTryAuthenticateUserCredentialsProvider

上記のいずれかが解決策である場合、別のルートを登録したり、を呼び出すときに管理者とユーザーを区別したりする方法はありますかTryAuthenticate

どんな助けでも素晴らしいでしょう。ありがとうございました。

4

1 に答える 1

1

認証用のエンドポイントとプロバイダーは 1 つだけに固執します。これにより、認証が大幅に簡素化されます。

内部では、認証プロバイダーはユーザーと管理者の両方のテーブルをチェックする必要があります。それができたら、user テーブルと admin テーブルの両方からのすべてのデータを 1 つの結合された user リソースに変換します。管理者は、 「管理者」ロールを持つユーザーとして示される必要があります。そうすれば、ServiceStack の組み込みロールを引き続き活用できます。

つまり、ある種のデータ アクセス レイヤーの下で複雑さを一掃し、エンドポイントが適切でクリーンな状態を保つようにします。

于 2013-03-08T21:47:19.343 に答える