2017-10-27 3 views
1

カスタムCredentialsAuthProviderでは、正常な認証時にMetaプロパティで追加データを送信します。現在のレスポンスを取得し、メタに情報を追加するにはどうすればよいですか?私はOnAuthenticatedメソッドでこれをやりたがっています。なぜなら、認証されたユーザのためにもう少し論理があり、メタを送るからです。これはセッションデータではなく、ログインしたユーザーのために1回だけです。カスタムCredentialsAuthProviderでは、正常な認証時にMetaプロパティの追加データを送信したい

これはExisting Questionですが、コメントに記載されているように既に認証されたユーザーに影響を与えるかどうかは約4歳です。また、これは、私がOnAuthenticatedイベントで認証されたユーザーに対してのみ実行したいので、私には適用されないAuthenticateメソッドをオーバーライドすることを提案します。

答えて

2

あなたのAuthProviderは、あなたが応答を変更することができます成功した認証にAuthFilterContextで呼び出さIAuthResponseFilter実装することによってAuthenticateResponseを変更することができます。

public void Execute(AuthFilterContext authContext) 
{ 
    authContext.AuthResponse.Meta = new Dictionary<string,string> { ... }; 
} 

別のオプションは、あなたのAuthProviderに例えばAuthenticateをオーバーライドすることです::それはあなたがまた、例えば、レスポンスDTOを変更するGlobal Response Filterを登録することができ、単に通常のサービスの代替として

public override object Authenticate(
    IServiceBase authService, IAuthSession session, Authenticate request) 
{ 
    var response = base.Authenticate(authService, session, request); 
    if (response is AuthenticateResponse authDto) 
    { 
     authDto.Meta = new Dictionary<string,string> { ... } 
    } 
    return response; 
} 
GlobalResponseFilters.Add((req, res, responseDto) => 
{ 
    if (responseDto is AuthenticateResponse authDto) 
    { 
     authDto.Meta = new Dictionary<string,string> { ... } 
    } 
}); 
+0

ありがとうmythz。私はこれを試し、あなたに知らせるでしょう。一度agianに感謝します。ああ、SOのservicestackの男;) – Kalyan

+1

これは働いた。ありがとうmythz。 – Kalyan

関連する問題