В моем проекте symfony я хотел бы использовать аутентификацию. Так что я написал это в моем security.yml файлеSymfony2: login_check и аннотация
firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false default: anonymous: ~ login_firewall: pattern: ^/login$ anonymous: ~ secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /login_check post_only: true always_use_default_target_path: true default_target_path: / use_referer: false username_parameter: username password_parameter: password intention: authenticate logout: path: /logout target:/
Хорошо, теперь документация говорит, что мне нужно добавить в routing.yml это:
login: pattern: /login defaults: { _controller: AcmeSecurityBundle:Security:login } login_check: pattern: /login_check
Но я использую аннотацию, так что я не 't использовать файлы маршрутизации. Вместо этого у меня есть это:
/** * @Route("/login") * @Template() */ public function loginAction() { $request = $this->getRequest(); $session = $request->getSession(); // get the login error if there is one if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) { $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR); } else { $error = $session->get(SecurityContext::AUTHENTICATION_ERROR); $session->remove(SecurityContext::AUTHENTICATION_ERROR); } return array( // last username entered by the user 'last_username' => $session->get(SecurityContext::LAST_USERNAME), 'error' => $error, ); }
Если я ничего не делаю, у меня есть ошибка в моей странице входа:
"Unable to generate a URL for the named route "login_check" as such route does not exist."
Если добавить действие в моем контроллере с пустым ответом, есть .. . ничего.
Что я делаю неправильно?
Когда я это сделаю, у меня есть эта ошибка: Невозможно найти контроллер для пути "/ login_check". Возможно, вы забыли добавить соответствующий маршрут в свою конфигурацию маршрутизации? – eluus
Тот, который говорит «Невозможно создать URL», правильно? Это может быть конфликт между брандмауэрами? Я вижу, что у вас также есть 'login_firewall', который, я думаю, перекрывается с брандмауэром' secure_area' –
Вот и все! Большое спасибо ! – eluus