2

ServiceStack を使用して、Web サービス、Android アプリなどの API を作成しています。現在、クライアント側で次のようなユーザー名とパスワードの組み合わせで認証しています。

var authResponse = authService.Authenticate(new Auth {
provider = "credentials",
UserName = user.user_id,
Password = user.password,
RememberMe = true
});

私は次のようなことをしたいと思います:

var authResponse = authService.Authenticate(new Auth {
provider = "credentials",
UserName = user.user_id,
Password = user.password,
ClientCode = user.clientCode <=====
RememberMe = true
});

この時点で、ユーザー名/パスワードとともにクライアント コードを送信する必要があります。もう一方の端では、そのクライアント コードを使用して、認証する必要があるデータベースを決定します。

現時点では Auth クラスを拡張することはできそうにないので、もっと簡単に始められるところはないかと考えています。

ありがとう

4

2 に答える 2

1

クライアント コードのヘッダー値を渡してみることができます。API キーを渡す例を検索できます。

于 2013-10-17T00:50:48.440 に答える
1

これには、別の認証プロバイダーの実装を使用することをお勧めします。詳細は次のとおりです。

  • 次のように、クライアント コードごとに個別のクラスを作成します。
public class Code1AuthProvider : CredentialsAuthProvider
    {

        public Code1AuthProvider ()
        {
            this.Provider = "Code1";

        }
        public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
        {
        }
        public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary authInfo)
        {
        }
}

同様に、コードごとに個別のクラスを作成します。

  • ここで、プロジェクトの AppHost ファイルにすべてのプロバイダーを登録する必要があります。

  • /Auth/Code1これで、認証としてアクセスできます。別のデータベースを使用しているため、この方法でコードを管理する方が簡単です。

  • [Authenticate("Code1")]特定のタイプのユーザーに対してサービスを認証する場合に使用します。

  • クライアント側では、適切な/Auth/ClientCodeURL を使用して認証できます。

于 2013-10-17T12:39:40.293 に答える