4

アプリに新規ユーザーを登録する際に問題が発生しました。動作は仕様のようですが、理由がわかりません。

私の問題は次のとおりです(そして、それは少しエッジケースであることを知っています):

  • ユーザーは、同じブラウザーの 2 つの別々のタブでサイトのログイン ページを参照します。
  • 最初のタブで、ユーザーがログインし、ホームページに正しくリダイレ​​クトされます。
  • 2 番目のタブで、ユーザーは私のサインアップ ロジックに従います (ページの更新は一切必要ありません。組み込みの ServiceStack RegistrationService の /register エンドポイントへの jQuery AJAX POST で最高潮に達するクライアント側コードですべて完了します)。

新しいユーザーを作成する代わりに、2 番目のユーザーの詳細がログインしているユーザーの UserAuth レコードの詳細を上書きし、最初のユーザーはログインできなくなります。

ServiceStack.ServiceInterface.Auth.RegistrationService のコードを見ると、この動作は 100% 意図的であるように見えます。

var session = this.GetSession();
var newUserAuth = ToUserAuth(request);
var existingUser = UserAuthRepo.GetUserAuth(session, null);

var registerNewUser = existingUser == null;
var user = registerNewUser
            ? this.UserAuthRepo.CreateUserAuth(newUserAuth, request.Password)
            : this.UserAuthRepo.UpdateUserAuth(existingUser, newUserAuth, request.Password);

最初のユーザーがログインすると、そのユーザーのセッション Cookie が登録要求と共に送信され、上記のコードの existingUser 変数にそのユーザーの UserAuth が入力され、登録ユーザーの詳細で更新されます。

コードがこのように書かれている理由を誰か説明できますか? また、RegistrationService を自分の実装に置き換えずに回避する方法はありますか?

4

1 に答える 1

0

これは、異なる認証プロバイダーを ServiceStack の同じアカウントに自動マージできる機能です。

于 2013-07-01T14:52:48.070 に答える