2

こんにちはサービス スタック ユーザー -

今後の質問の TL;DR バージョンは次のとおりです: Servicestack で認証するときにカスタム認証応答を返すにはどうすればよいですか?

このトピックに関する以前のスタックの質問/回答をいくつか調べましたが、これを行うための最良の方法を思い付くことができませんでした:

ServiceStack 認証を拡張し、ServiceStack 認証からカスタム認証応答オブジェクト 返す方法

このオブジェクトを ServiceStack からリモートの JsonServiceClient に返したいと思います。

public class MyGreatCustomAuthResponse : AuthResponse
{
    public UserModel UserModel { get; set; }
}

現在、デフォルトの認証応答で動作しているクライアントがあります。私はこの方法でそれを行います:

var AuthResponse = client.Post(new Auth
{
    provider = "credentials",
    UserName = user.user_id, 
    Password = user.password,
    RememberMe = true
});

カスタム応答を受け入れる方法は次のようになると思いました。

var AuthResponse = client.Post<MyGreatCustomResponse>(new CustomAuthRequest
{
    provider = "credentials",
   UserName = user.user_id, 
   Password = user.password,
    RememberMe = true
});
//Use the UserModel object in the response for some other function on the client
var UserModel = AuthResponse.UserModel ; 

それは簡単にできることですか?もしそうなら、どのようにこれをコーディングし始めることができますか?

4

1 に答える 1

0

v3 では、組み込みのAuthServiceをコピーしてカスタマイズする以外に、グローバルまたはレスポンス フィルター属性を使用してカスタム HTTP ヘッダーを追加することにより、追加のメタデータを追加できます。

次の v4 リリースではDictionary<string, string> Meta認証および登録応答 DTOに を追加したので、応答フィルターを使用して応答 DTO にメタデータを直接追加できます。

サンプルコード

 this.GlobalResponseFilters.Add((req, res, responseDto) =>
        {
            if (res.Dto.GetType() == typeof(AuthenticateResponse))
            {
                CustomUserSession cs = (CustomUserSession)req.GetSession();
                Dictionary<string, string> otherData = new Dictionary<string, string>();
                otherData.Add("CustomData", cs.CustomData.ToString());
                ((AuthenticateResponse)res.Dto).Meta = otherData;
            }
        });
于 2013-10-23T21:18:06.873 に答える