詳細は各コントローラー アクションで何をしているかによって異なりますが、もちろん可能です。最も簡単な方法は次のとおりです。
class PublicController extends \Symfony\Bundle\FrameworkBundle\Controller\Controller
{
public function indexAction()
{
if ($this->getUser() !== null) {
return $this->forward('BundleName:PrivateController:index');
}
// do public controller details
}
}
したがって、デフォルトでは全員が に送信され、( Symfony の Controller クラスのメソッドPublicController:indexAction
を使用して) ログインしているユーザーがいるかどうかをチェックし、存在する場合は、リクエストをに転送します。そうでない場合は、期待どおりに公開アクションを示しているだけです。(Symfony がサブリクエストを作成してディスパッチするため) 転送のパフォーマンスが低下するため、ログアウトしたユーザーよりも多くのログインしているユーザーが予想される場合は、これを逆にすることができます。getUser
PrivateController:indexAction
より長い答えは、それらを分離する必要がある各コントローラーで何をしているかを理解し、機能をサービスに結合するか、そうでなければそれらを再構築できるかどうかを理解することです。特定の問題ドメインについて詳しく知らなくても、上記が最善の方法のように思えます。