1

典型的なMVCWebアプリケーションの場合、ルーター/ディスパッチャールーチンを使用して、主にユーザーがURLで要求した領域に基づいてロードするコントローラーを決定すると思います。

ただし、URLクエリ文字列をチェックするだけでなく、ディスパッチャーを使用して、ユーザーが現在ログインしているかどうかをチェックし、どのコントローラーがロードされているかを判断することも好きです。たとえば、ログインしてログインページを要求した場合、コーディネーターは代わりにアカウントをロードします。

しかし、これはかなり非標準的な設計ですか?何らかの形でMVCに違反しますか?今週末に読んだ例では、ディスパッチャールーチンの前に主要な計算が実行されていないため、通常、ユーザーがコントローラーごとにログインしているかどうかを確認し、必要に応じてリダイレクトします。

しかし、そもそもアカウントコントローラをロードできるのであれば、ログインしたユーザーをログインエリアからアカウントエリアにリダイレクトするのは奇妙に思えますか?

私の驚愕について十分に説明できたと思いますが、ログインしたユーザーの処理方法や同様のセッションデータについて、誰かが詳細を教えてくれませんか?

4

2 に答える 2

1

これは公正な要件のようであり、インターセプトフィルターを使用して実現できます。リクエストヘッダーは、ログインの試みとして検査およびフラグを立てたり、悪意のある試みとしてマークしたりすることができます。または、ディスパッチャはこれを別のコントローラに委任できます。別のコントローラは同じことを実行して、要求を適切にリダイレクトできます。MVCは、アプリケーションにおけるインテリジェンスの分離に関するものです。このケースは健全性チェック(ビジネス要件よりも技術的要件)に該当します。

于 2010-04-11T19:32:40.273 に答える
1

私が使用している現在のMVCフレームワークには、ディスパッチ前とディスパッチ後の機能があります。私は通常、ログインチェックをディスパッチャに直接配置するのではなく、ディスパッチ前のプロセスに配置します。また、認証クラスがあなたに代わって仕事をするかもしれません。

于 2010-04-11T19:38:41.313 に答える