0

次のシナリオが受け入れられるかどうか、そして受け入れられない場合は、他にどのような方法でこれを行うことができるかを誰かがアドバイスしてくれることを願っています。

認証に独自のデータベース(SQL)モデルを使用して、FormsAuthenticationを使用してASP.Netサイトを開発しました。複数のユーザーがログオンできます。考慮すべき1つのポイントは、各ユーザーがお互いのレコードにアクセスできないことです。

コードでは、ページの読み込みに、ログオンしているユーザーの詳細を読み込むUserオブジェクトがあります。

彼らがレコードにアクセスすると、渡されたレコードのIDを持つハイパーリンクがあり、ユーザーは完全なレコードを表示できる詳細ページにリダイレクトされます。

詳細ページで、現在のユーザーの詳細を再度ロードし、SQLを使用して、ログオンしたユーザーIDと渡されたレコードのIDでレコードを取得します。

これまでのところ、自分のレコードにアクセスするユーザー1でログオンしたので、これは機能しました。URLをコピーして、ユーザーをログインページにリダイレクトする別のブラウザーに貼り付けます。今回はユーザー2でログインします。ページは表示されますが、詳細は表示されません。

これは大丈夫ですか、それとも私がしなければならないことはありますか?もちろん、詳細が返されない場合は、空白のページを表示する代わりに、アクセス拒否ページへのリダイレクトを実装します。

ご不明な点がございましたら、お気軽にお問い合わせください。

4

1 に答える 1

0

それはすべて問題ないように聞こえますが、私はもっと細かいものを選びます。アクセス制御リストに基づいて他の人のレコードにアクセスできるようにするものですが、それはもっと複雑です。

あなたが書いたもので私が変更したいのは、アクセスが拒否されたページへの「リダイレクト」だけです。エラーページへのリダイレクトは絶対に実行しないでください。代わりに、元の応答でエラーメッセージを返します。ASP.NET WebFormsでこれを行うには、を使用するServer.Transferか、応答バッファーをクリアして(必要な場合)、ページのコンテンツを正しいメッセージでASCXに設定します。HTTPステータスを403に設定することを忘れないでください。

于 2013-03-09T11:52:17.330 に答える