ServiceStackのSocialBootstrapApiを使用しており、OnRegisteredメソッドをオーバーライドするために使用できるクラスCustomUserSessionが含まれています。新しいユーザーが登録したイベントを公開できるように、登録に関する情報を取得しようとしているので、オーバーライドしたいと思います。このハンドラーは、登録を処理したRegistrationServiceのインスタンスを提供しますが、登録要求自体または結果のUserAuthインスタンスについては何も提供しません。たとえば、登録に使用したメールアドレスを取得したいのですが。
public override void OnRegistered(IServiceBase registrationService)
{
base.OnRegistered(registrationService);
// Ideally, I could do get the registered user's primary e-mail address from the UserAuth instance.
var primaryEmail = ((RegistrationService) registrationService)
.UserAuthRepo
.GetUserAuth(this, null) //<--- 'this' is a mostly empty session instance
.PrimaryEmail;
}
もちろん、これは機能しません。これは、GetUserAuth呼び出しに使用しているセッションインスタンスに、ユーザーの認証情報の検索に役立つ必要な認証情報が含まれていないためです。したがって、GetUserAuthは期待どおりにnullを返します。では、この情報を取得するにはどうすればよいですか?OnRegisteredハンドラーにRegistrationServiceによって作成されたUserAuthインスタンスが渡されるのは間違った設計でしょうか?
public interface IAuthSession
{
...
void OnRegistered(IServiceBase registrationService, UserAuth userAuth); // <-- new signature
...
}
それは便利でしょう!:)
それとも、これについて別の方法がありますか?
前もって感謝します。