thisと同じように、私のサイトの管理バンドルとフロントバンドルバンドルの両方に別のログインが必要です。管理者は実際にはvendors
にある別のバンドルです。Symfony2/FOSUserBundle - 複数のバンドルに関する問題
アプリ/設定/ routing.ymlファイル:
は今、私のルーティングがどのように見える
AcmeSiteBundle:
resource: "@SiteBundle/Resources/config/routing.yml"
prefix: /
AcmeAdminBundle:
resource: "@AdminBundle/Resources/config/routing.yml"
prefix: /admin/
バンドルの個々のrouting.ymlファイルの両方があります。
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_security_login:
pattern: /login
defaults: { _controller: FOSUserBundle:Security:login }
fos_user_security_check:
pattern: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
fos_user_security_logout:
pattern: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
security.ymlのファイアウォール:
firewalls:
main:
context: site
pattern: ^/admin/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /admin/login
check_path: /admin/login_check
logout:
path: /admin/logout
anonymous: true
frontend:
context: site
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
logout:
path: /logout
anonymous: true
問題は、フロントエンドの自動生成されたログインリンクが、/login
ではなく/admin/login
を指していることです。これは私が起こりたいことではありません。
私はそこにいるときに/admin/*
リンクを使用することができますが、フロントエンドでは/
リンクのみを使用しますか?管理者側にログインしている人がフロントエンドにログインしたままでいるため、コンテキストをリンクしたままにしておく必要があります。
EDIT:
SiteBundleさんのrouting.yml(前と同じ)::
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_security_login:
pattern: /login
defaults: { _controller: FOSUserBundle:Security:login }
fos_user_security_check:
pattern: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
fos_user_security_logout:
pattern: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
AdminBundleさんのrouting.yml:
_admin_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_admin_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
_admin_user_security_login:
pattern: /login
defaults: { _controller: FOSUserBundle:Security:login }
_admin_user_security_check:
pattern: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
_admin_user_security_logout:
pattern: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
私は、次のように私のルートに改称$ app/console router:debug
は、
ご覧のとおり、正しい登録ルートは唯一のもので、サイトバンドルのrouting.ymlにはがちょうどとなっています。
私は、バックエンド用に別のログインを持つ単一のバンドルを持っています。私はFOSUserBundleのloginActionを上書きしました。この新しいアクションは、adminログイン用の新しいテンプレートをレンダリングします。私のルートは、バックエンドの場合は "/ admin/login"、フロントエンドの場合は/ loginです。それがあなたが探しているものなら、私はソースコードを投稿することができます。 – stwe