symfony - fosuserbundle No se encontrĂ³ ninguna ruta para "GET/login/"
routing (2)
En primer lugar ... su url de inicio de sesión debe ser (de acuerdo con su configuración actual) ser /login
y no /login/
.
El url /login
/
(con una barra inclinada) no existe en su configuración de enrutamiento.
La forma correcta sería dejar que el enrutador genere la url usando el nombre de la ruta y no codificar esa URL /login
en ninguna de sus plantillas.
{{ path(''fos_user_security_login'') }}
Además ... Lea mi respuesta aquí que explica la forma en que funciona <firewall>.login.check_path
.
Cambie el proveedor de su servidor de fos_userbundle
principal del user
a fos_userbundle
.
No hay una configuración de proveedor adicional en login_path
.
firewalls:
main:
pattern: ^/
provider: fos_userbundle
form_login:
csrf_provider: form.csrf_provider
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: app_website_index
logout:
path: fos_user_security_logout
target: fos_user_security_login
anonymous: true
Además, ha declarado la desconexión dos veces en su configuración de firewall (la segunda sobrescribe primero):
firewalls:
# ...
logout: true
# ...
logout:
path: /logout
target: /login
Recientemente actualicé Symfony2 usando compositor, y ahora no puedo iniciar sesión. Aquí están los archivos relevantes. Avíseme si se necesitan más datos.
app / config / routing.yml
app_admin:
resource: "@AppAdminBundle/Resources/config/routing.yml"
prefix: /admin
host: dashboard.muchomonitor.com
app_website:
resource: "@AppWebsiteBundle/Resources/config/routing.yml"
prefix: /
host: www.muchomonitor.com
app_monitor:
resource: "@AppMonitorBundle/Resources/config/routing.yml"
prefix: /
host: dashboard.muchomonitor.com
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
host: dashboard.muchomonitor.com
fos_user_security_reset:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /login
host: dashboard.muchomonitor.com
app / config / security.yml
security:
encoders:
FOS/UserBundle/Model/UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
user:
entity: { class: App/MonitorBundle/Entity/User, property: username }
firewalls:
main:
pattern: ^/
provider: user
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: /
logout: true
anonymous: true
logout:
path: /logout
target: /login
access_control:
- { path: ^/admin, role: ROLE_SUPER_ADMIN, host: dashboard.muchomonitor.com }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY, host: dashboard.muchomonitor.com }
- { path: ^/_, role: ROLE_ADMIN } # Development mode
- { path: ^/public-status, role: IS_AUTHENTICATED_ANONYMOUSLY, host: dashboard.muchomonitor.com }
- { path: ^/ipn, role: IS_AUTHENTICATED_ANONYMOUSLY, host: dashboard.muchomonitor.com }
- { path: ^/invoice, role: IS_AUTHENTICATED_ANONYMOUSLY, host: dashboard.muchomonitor.com }
- { path: ^/, role: ROLE_USER, host: dashboard.muchomonitor.com }
proveedor / friendsofsymfony / user-bundle / FOS / UserBundle / Resources / config / routing / security.xml
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="fos_user_security_login" pattern="/login">
<default key="_controller">FOSUserBundle:Security:login</default>
</route>
<route id="fos_user_security_check" pattern="/login_check">
<default key="_controller">FOSUserBundle:Security:check</default>
<requirement key="_method">POST</requirement>
</route>
<route id="fos_user_security_logout" pattern="/logout">
<default key="_controller">FOSUserBundle:Security:logout</default>
</route>
</routes>
proveedor / friendsofsymfony / user-bundle / FOS / UserBundle / Resources / config / routing / resetting.xml
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="fos_user_resetting_request" pattern="/request">
<default key="_controller">FOSUserBundle:Resetting:request</default>
<requirement key="_method">GET</requirement>
</route>
<route id="fos_user_resetting_send_email" pattern="/send-email">
<default key="_controller">FOSUserBundle:Resetting:sendEmail</default>
<requirement key="_method">POST</requirement>
</route>
<route id="fos_user_resetting_check_email" pattern="/check-email">
<default key="_controller">FOSUserBundle:Resetting:checkEmail</default>
<requirement key="_method">GET</requirement>
</route>
<route id="fos_user_resetting_reset" pattern="/reset/{token}">
<default key="_controller">FOSUserBundle:Resetting:reset</default>
<requirement key="_method">GET|POST</requirement>
</route>
</routes>
ruta de la aplicación php / consola: depuración
Name Method Scheme Host Path
app_admin_users ANY ANY dashboard.muchomonitor.com /admin
app_admin_add_user ANY ANY dashboard.muchomonitor.com /admin
app_admin_edit_user ANY ANY dashboard.muchomonitor.com /admin
app_admin_delete_user ANY ANY dashboard.muchomonitor.com /admin/user/{id}/delete
app_admin_login_user ANY ANY dashboard.muchomonitor.com /admin/user/{id}/login
app_admin_plans ANY ANY dashboard.muchomonitor.com /admin/plans
app_admin_delete_plan ANY ANY dashboard.muchomonitor.com /admin/plans/{id}/delete
app_admin_edit_plan ANY ANY dashboard.muchomonitor.com /admin/plans/{id}/edit
app_admin_add_plan ANY ANY dashboard.muchomonitor.com /admin/plans/add
app_admin_invoices ANY ANY dashboard.muchomonitor.com /admin/invoices
app_admin_delete_invoice ANY ANY dashboard.muchomonitor.com /admin/invoices/{id}/delete
app_admin_edit_invoice ANY ANY dashboard.muchomonitor.com /admin/invoices/{id}/edit
app_admin_add_invoice ANY ANY dashboard.muchomonitor.com /admin/invoices/add
app_website_index ANY ANY www.muchomonitor.com /
app_website_pricing ANY ANY www.muchomonitor.com /pricing
app_website_privacy_policy ANY ANY www.muchomonitor.com /legal/privacypolicy
app_website_signup ANY ANY www.muchomonitor.com /signup
app_website_tos ANY ANY www.muchomonitor.com /legal/termsofservice
app_website_contact_us ANY ANY www.muchomonitor.com /contactus
app_monitor_dashboard ANY ANY dashboard.muchomonitor.com /
app_monitor_dashboard_search ANY ANY dashboard.muchomonitor.com /dashboard/search/{filter}
app_monitor_dashboard_toggle ANY ANY dashboard.muchomonitor.com /dashboard/toggle/{monitor}
app_monitor_dashboard_delete ANY ANY dashboard.muchomonitor.com /dashboard/delete
app_monitor_dashboard_test ANY ANY dashboard.muchomonitor.com /dashboard/test
app_monitor_monitors ANY ANY dashboard.muchomonitor.com /monitors
app_monitor_monitors_edit ANY ANY dashboard.muchomonitor.com /monitors/edit/{monitor}
app_monitor_monitors_new ANY ANY dashboard.muchomonitor.com /monitors/new
app_monitor_monitors_toggle ANY ANY dashboard.muchomonitor.com /monitors/toggle/{monitor}
app_monitor_monitors_delete ANY ANY dashboard.muchomonitor.com /monitors/delete
app_monitor_monitors_test ANY ANY dashboard.muchomonitor.com /monitors/test
app_monitor_report ANY ANY dashboard.muchomonitor.com /report
app_monitor_reports ANY ANY dashboard.muchomonitor.com /report
app_monitor_report_specific ANY ANY dashboard.muchomonitor.com /report/{monitor}
app_monitor_accounts ANY ANY dashboard.muchomonitor.com /accounts
app_monitor_accounts_edit ANY ANY dashboard.muchomonitor.com /accounts/edit/{id}
app_monitor_accounts_new ANY ANY dashboard.muchomonitor.com /accounts/new
app_monitor_accounts_delete ANY ANY dashboard.muchomonitor.com /accounts/delete
app_monitor_billing ANY ANY dashboard.muchomonitor.com /billing
app_monitor_billing_all ANY ANY dashboard.muchomonitor.com /billing/all
app_monitor_billing_invoice ANY ANY dashboard.muchomonitor.com /invoice/{key}/{id}
app_monitor_notifications ANY ANY dashboard.muchomonitor.com /notifications
app_monitor_ipn ANY ANY dashboard.muchomonitor.com /ipn
app_monitor_ipn_stripe ANY ANY dashboard.muchomonitor.com /ipn-stripe
fos_user_security_login ANY ANY dashboard.muchomonitor.com /login
fos_user_security_check POST ANY dashboard.muchomonitor.com /login_check
fos_user_security_logout ANY ANY dashboard.muchomonitor.com /logout
fos_user_resetting_request GET ANY dashboard.muchomonitor.com /login/request
fos_user_resetting_send_email POST ANY dashboard.muchomonitor.com /login/send-email
fos_user_resetting_check_email GET ANY dashboard.muchomonitor.com /login/check-email
fos_user_resetting_reset GET|POST ANY dashboard.muchomonitor.com /login/reset/{token}
ir a dashboard.muchomonitor.com/login muestra que no funciona, a pesar de lo que dice el comando anterior.
EDIT: he resuelto el problema. En routing.yml
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 }
Obtuve el problema similar, aunque lo resolví de forma diferente (usando Symfony 3.1, pero quizás sea el mismo trabajo).
Cuando ejecuté en la consola el comando bin/console debug:router
, pude ver que las rutas para la autenticación proporcionada por el paquete de usuario de FoS eran correctas y se mostraban correctamente.
Ahora, el problema es que en la consola, el entorno predeterminado era DEV, mientras que desde el broser, era PROD.
Ejecuté el mismo comando anterior, pero explícitamente pasando el entorno, de la siguiente manera:
bin/console debug:router --env=dev
, y obtuve los mismos resultados que antes.
Pero al ejecutar bin/console debug:router --env=prod
, recibí un error en la consola, diciendo que no se pudo encontrar el archivo routing.yml
.
Eso fue correcto Cambié la estructura del directorio de app/config
y creé una carpeta para cada entorno, con los archivos relevantes en cada carpeta (configuración mucho más ordenada, en mi humilde opinión).
Pero parece que la ruta para routing.yml
para el entorno PROD está codificada en algunos proveedores (por ejemplo, en vendor/sensio/generator-bundle/Command
), y debido a eso, la ubicación de ese archivo no puede modificarse.
Después de volver a organizar la carpeta de configuración, todo funcionó (pero tuve que borrar la caché del entorno de PROD, de la siguiente manera: bin/console cache:clear --no-warmup --env=prod
.