クライアント用の Web アプリを作成しています。ユーザーは、アプリに対して最初に自分自身を識別するために使用するワンタイム キーを持ちます。アプリがキーが有効であることを確認すると、その後のすべてのログインに使用する通常のアカウントを作成できるページが表示されます。アカウントの作成ページは、キーを入力した後にのみアクセスできるようにする必要があり、それ以外の場合はアクセスできないようにする必要があります。つまり、通常のアカウントでログインしているユーザーがアクセスできないようにする必要があります。これは、カスタム メンバーシップ プロバイダーを使用する asp.net 3.0 です。
私の計画は、キーに基づいて一時的なアカウントを作成し、そのアカウントでユーザーを認証することです。これにより、正式なアカウントを作成できる create-user ページ ( location タグで保護されている) にアクセスできるようになります。次に、新しいアカウントで認証し、一時的なアカウントを削除します。フローは次のとおりです。ユーザーは、キーを入力するページに移動します。キーが有効であれば、一時アカウントを作成し、FormsAuthentication.SetAuthCookie を呼び出して、アカウント作成ページにリダイレクトします。少し複雑に見えますが、これはすべて機能します。
問題は、認証されたすべてのユーザーがユーザー作成ページを使用できることです。キーを入力してから正式なアカウントを作成するまでの間だけ利用できるようにしてほしい。そこで、一時アカウント用に特別な役割を作成し、その役割のみがユーザー作成ページにアクセスできるようにしようと考えました。特別なロールを持つ独自のプリンシパル オブジェクトを作成し、一時アカウントを認証するときにそれを設定しようとしましたが、それを機能させることができません。
これを行うためだけにカスタム ロール プロバイダーを作成する必要がないことを本当に望んでいます。
どうすればこれを機能させることができますか?もっと簡単な方法があるはずです!