0

クライアント用の Web アプリを作成しています。ユーザーは、アプリに対して最初に自分自身を識別するために使用するワンタイム キーを持ちます。アプリがキーが有効であることを確認すると、その後のすべてのログインに使用する通常のアカウントを作成できるページが表示されます。アカウントの作成ページは、キーを入力した後にのみアクセスできるようにする必要があり、それ以外の場合はアクセスできないようにする必要があります。つまり、通常のアカウントでログインしているユーザーがアクセスできないようにする必要があります。これは、カスタム メンバーシップ プロバイダーを使用する asp.net 3.0 です。

私の計画は、キーに基づいて一時的なアカウントを作成し、そのアカウントでユーザーを認証することです。これにより、正式なアカウントを作成できる create-user ページ ( location タグで保護されている) にアクセスできるようになります。次に、新しいアカウントで認証し、一時的なアカウントを削除します。フローは次のとおりです。ユーザーは、キーを入力するページに移動します。キーが有効であれば、一時アカウントを作成し、FormsAuthentication.SetAuthCookie を呼び出して、アカウント作成ページにリダイレクトします。少し複雑に見えますが、これはすべて機能します。

問題は、認証されたすべてのユーザーがユーザー作成ページを使用できることです。キーを入力してから正式なアカウントを作成するまでの間だけ利用できるようにしてほしい。そこで、一時アカウント用に特別な役割を作成し、その役割のみがユーザー作成ページにアクセスできるようにしようと考えました。特別なロールを持つ独自のプリンシパル オブジェクトを作成し、一時アカウントを認証するときにそれを設定しようとしましたが、それを機能させることができません。

これを行うためだけにカスタム ロール プロバイダーを作成する必要がないことを本当に望んでいます。

どうすればこれを機能させることができますか?もっと簡単な方法があるはずです!

4

3 に答える 3

0

キーを入力するときに実際のアカウントを作成するだけではどうですか。ランダムな名前を割り当ててから、名前やその他の詳細を変更させます。次に、ユーザー作成ページは必要なく、Enter キー ページとアカウント詳細編集ページだけが必要です。アカウントの詳細を入力することに不安がある場合は、詳細が入力されるまで不完全なアカウントが常に詳細の編集ページにリダイレクトされるように (おそらく MasterPage のコードを介して) 設定できます。

または、キー入力ページでキーコードに加えて必要な詳細を入力してもらい、アカウントの作成時にそれらの詳細を使用することもできます。

于 2009-01-09T04:18:33.973 に答える
0

ユーザーを検証するときは、一時的なアカウントの使用を避けることをお勧めします。代わりに、サインアップ キーを検証するための独自のロジックを生成します。次に、ページの先頭で、ユーザーが認証されたユーザーであるかどうか (SetAuthCookie が呼び出されているかどうか) を確認し、真であれば別のページにジャンプできます。

ページへのアクセスを変更して、認証されたユーザーがこのページにアクセスできないようにすることもできます(認証されていないユーザーのアカウントを無効にできることは知っていますが、別の方向に進むことができるかどうかはわかりません)。

ただし、重要なのは、実際にはユーザーがまだメンバーになっていない場合に、メンバーシップ プロバイダーに依存しないようにすることです。

于 2009-01-09T04:19:36.687 に答える
0

一時トークンに対して認証するときに「不完全な」役割を割り当て、その役割のみにアクセスを制限します...アカウントが作成されると、それらを再ログインページに送信します(認証トークンを終了します)。これにより、セキュリティ モデルが簡素化されます。

于 2009-05-23T03:07:17.933 に答える