У меня есть две таблицы в этом проекте. Одна таблица предназначена для администратора сайта, который хранит все данные пользователей-администраторов, а другая таблица хранит все данные для входа клиентов на сайт.
В данный момент я могу войти в систему, используя данные администратора. Тем не менее, я сейчас пытаюсь войти в систему с данными клиента, и это не похоже на работу. Пока пользователь нажимает на ссылку, он переходит в / clientarea / login. Эта страница загружается нормально. Но когда я пытаюсь войти в систему, я получаю сообщение об ошибке.
Я получаю следующую ошибку:
Невозможно найти контроллер для пути "/ clientarea / login_check". Может быть, вы забыли добавить соответствующий маршрут в конфигурацию маршрутизации?
В моем файле security.yml у меня есть следующий код: (Кстати, я использую открытый текст только для разработки, он будет изменен при запуске):
providers:
admin_db:
entity: { class: Shout\AdminBundle\Entity\User, property: username }
client_db:
entity: { class: Shout\AdminBundle\Entity\Userclients, property: username }
encoders:
Shout\AdminBundle\Entity\User:
algorithm: plaintext
Shout\AdminBundle\Entity\Userclients:
algorithm: plaintext
firewalls:
secured_area:
pattern: ^/
anonymous: ~
provider: admin_db
form_login:
check_path: /login_check
login_path: /login
logout:
path: /logout
target: /index
client_area:
pattern: ^/
anonymous: ~
provider: client_db
form_login:
check_path: /clientarea/login_check
login_path: /clientarea/login
logout:
path: /clientarea/logout
target: /index
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/clientarea/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/clientarea, roles: ROLE_USER }
В моем routing.yml у меня есть этот код:
login:
pattern: /login
defaults: { _controller: ShoutAdminBundle:Security:login }
login_check:
pattern: /login_check
logout:
pattern: /logout
clientlogin:
pattern: /clientarea/login
defaults: { _controller: ShoutAdminBundle:Security:clientlogin }
clientlogin_check:
pattern: /clientarea/login_check
clientlogout:
pattern: /clientarea/logout
Вот код в контроллере. Код идентичен для функций входа в систему и clientlogin, отличается только файл ветки, на который они указывают:
$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);
}
return $this->render('ShoutAdminBundle:Security:clientlogin.html.twig', array(
// last username entered by the user
'last_username' => $session->get(SecurityContext::LAST_USERNAME),
'error' => $error,
));
Путь действия формы входа клиента указывает на clientlogin_check.
Что я делаю не так?