web-dev-qa-db-ja.com

MVC Webアプリケーションでのパブリックフォルダーの役割は何ですか?

すべてのコントローラー、モデル、ビューをプライベートフォルダーに配置する必要がありますか?もしそうなら、パブリックフォルダの役割は何ですか?コンピュータサイエンスにおけるそのような役割の正しい用語は何ですか? GUIはそのような概念とどのように関連していますか?

それ以外の場合、コントローラーやビューをプライベートフォルダーとパブリックフォルダーに分散する必要がありますか?その場合、POSTを介して直接呼び出されるスクリプトは、単なるインターフェイス、コントローラーインターフェイス、またはビューインターフェイスですか?

3
mikl

多くのMVCフレームワーク(Railsなど)では、パブリックフォルダーを使用して静的ファイルを提供します。そのため、たとえば、そのようなフレームワークによって提供される「通常の」方法でプロジェクトを作成すると、404.html、500.html、favicon.icoファイルが頻繁に表示されます。これらは、バックエンドと相互作用しない「ダム」ファイルです。これらは、これらをレンダリングするためにコントローラーによって生成されたコンテキストを必要としないことが前提です。たとえば、404.htmlは、このURLには何も存在しないことを表すだけで、URLはフレームワークのルーティングシステムと一致しないものです。

また、そこに配置されたコンパイル済みアセットが表示される場合もあります(たとえば、ページのレンダリングに必要な接続の数を減らすために、複数のCSSファイルを1つに結合するフレームワークのアセットパイプライン)。

さらに、開発以外のウェブサーバーにデプロイすると、ウェブルートがパブリックディレクトリに設定されることがよくあります。

再:GUIがこの概念にどのように関係するか...これらを関連付けるのは簡単ですが、IDEソース制御機能(git統合など)を使用していると仮定すると)バージョンコントロールから除外するディレクトリを含むものとして自動的に検出されます。たとえば、コンパイルされたアセットは、コミットされたパイプライン構成とdevファイルを組み合わせて生成できるため、リポジトリに表示されたくない場合があります。

2
Kreychek

パブリックフォルダーの役割は、アプリケーションでパブリックにアクセスできるビューを持つことです。たとえば、ログインページは通常、匿名ユーザーがアクセスしてサイトにログインできるページです。

一部のMVC Webアプリケーションは、ページにアクセスする前に確認する内部セキュリティシステムを使用している可能性があるため、パブリックページがない場合があります。たとえば、SharePointサイトでは、Windows資格情報を使用してユーザーを特定し、存在する必要はありませんが、その必要はありません。存在します。

コンピュータサイエンスでは、これは情報セキュリティに該当し、承認ポリシーを調べます。各アプリケーションは、セキュリティを強化するために異なる方法を使用する場合があるため、これは潜在的にさまざまな方向に向かう可能性があります。

グラフィカルユーザーインターフェイスであるGUIは、ここでのアーキテクチャの一部として適合します。各ビューはユーザーインターフェイスであるため、GUIはビュー部分と適切に相互作用し、パブリックおよびプライベートフォルダーの概念が舞台裏のセキュリティ内で適用されます。ただし、サイトによっては、ロックやその他の記号を使用して、アクセスするために認証と承認が必要なページを示す場合があります。 。

コントローラーはフォルダーにまとめることができますが、コントローラーによっては分散が必要な場合があり、使用するテクノロジーによっては、これを実装する方法が異なる場合があります。ビューはフォルダーに含まれている可能性が高く、テクノロジーにもよりますが、さまざまな方法でセキュリティを処理できます。

サーバーへのPOST要求は、コントローラーを介してMVCアーキテクチャーのビューに到達する可能性があります。これは、コントローラーの役割である処理するデータが存在する可能性があるためです。ビューは、要求されたページのデータをユーザーに返す責任があります。


コメントへの応答:

コントローラーのセキュリティは、ファイルレベルまたは関数レベルで行うことができます。関数レベルでは、同じコントローラーが異なる機能を持つ場合があるため、後者の方が意味がある場合があります。たとえば、Yahoo!サインインしていない場合、最も人気のあるものが表示されるホームページが表示されますが、サインインしている場合、同じベースコントローラーを通過する可能性のあるパーソナライズされたページが表示されます。したがって、すべてのコントローラーコードが同じサーバーアカウントで実行される可能性が高いため、ここではファイルレベルのアクセス許可は無意味です。

パブリックビューのないWebアプリケーションがいくつか存在する可能性がありますが、これは、2人の人々がさまざまな形式、言語で通信する方法とは異なり、さまざまなテクノロジーを使用してさまざまな方法で実行できるセキュリティの実装方法に大きく依存します。そして文法。これを一般的にしておくと、使用する実装に応じて、数十の異なる回答が存在する可能性があることに注意してください。 ASP.Net Webformsを使用して独自のMVCを実装するか、ASP.Net MVCを使用するか、PHPパターンを実装する可能性のあるオープンソースコードベースなど)を調べます。

1
JB King