Проблема в Symfony при настройке пути входа

1

Я пытаюсь настроить пользователей в проекте, но я получаю ошибки из-за пути входа в систему. Это похоже на проблему с пробелами, но я попытался с php файлом, и ошибка такая же.

FileLoaderLoadException: файл маршрутизации "/Applications/MAMP/htdocs/Symfony/app/config/routing.yml" содержит неподдерживаемые ключи для "входа": "шаблон". Ожидаемый один из: "ресурс", "тип", "префикс", "путь", "хост", "схемы", "методы", "значения по умолчанию", "требования", "параметры", "условие" в/приложения /MAMP/htdocs/Symfony/app/config/routing.yml (который импортируется из "/Applications/MAMP/htdocs/Symfony/app/config/routing_dev.yml").

Код в app/config был:

login:
    pattern:    /login
    defaults:   { _controller: OCUserBundle:Security:login }

РЕДАКТИРОВАТЬ:
Поэтому я получаю ту же ошибку с новым проектом.
Вот что я делаю:
-Create 2 пакета (MGeneralBundle, MUserBundle) внутри "Me", пространство имен моего проекта.
-In app/config/routing.yml:

me_m_general:
    resource: "@MeMGeneralBundle/Resources/config/routing.yml"
    prefix:   /

login:
     path:   /login
     defaults: { _controller: MeMUserBundle:Security:login}

login_check:
    path:    /login_check

logout:
    path:    /logout

И в app/config/security.yml:

security:
    in_memory:
        memory: ~
firewalls:
    # disables authentication for assets and the profiler, adapt it according to your needs
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main_login:
    # Cette expression régulière permet de prendre /login (mais pas /login_check !)
        pattern:   ^/login$
        anonymous: true
    main:
        pattern:   ^/
        anonymous: false
        provider:  in_memory
        form_login:
            login_path: login
            check_path: login_check
        logout:
            path:   logout
            target: /

И контроллер для входа, с routing.yml в UserBundle:

me_home:
    path:     /
    defaults: { _controller: MeMUserBundle:Default:index }



<?php

namespace Me\MUserBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;

class SecurityController extends Controller
{
    public function loginAction(Request $request)
    {
      if ($this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
        return $this->redirectToRoute('me_home');
      }
      $authenticationUtils = $this->get('security.authentication_utils');
      return $this->render('MeMUserBundle:Security:login.html.twig', array(
        'last_username' => $authenticationUtils->getLastUsername(),
        'error'         => $authenticationUtils->getLastAuthenticationError(),
      ));
    }
}

Ошибка:

Вы запросили несуществующий сервис "security.context".

по адресу: http://localhost: 8888/Me/web/app_dev.php/login.

Я не знаю, как отладить это.

  • 0
    Ошибка довольно прямолинейна. pattern устарел и удаляется довольно долго - просто замените его на path .
  • 0
    Спасибо @Artamiel
Показать ещё 4 комментария
Теги:
login

1 ответ

0
Лучший ответ

Служба security.context устарела в версии 2.6 и полностью удалена в версии 3.0. Вместо этого вы хотите использовать security.authorization_checker:

 if ($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_REMEMBERED')) {

Фактически, Symfony 2.6 также ввел новые ярлыки контроллера, поэтому вам даже не нужно явно обращаться к этой службе. Это выглядит чище и будет работать так же хорошо в вашем контроллере:

if ($this->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  • 0
    Хорошо, теперь работает нормально, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню