Как войти в Symfony по URL

Я исследую кулинарную книгу в главе, касающейся безопасности, и самая близкая часть Как аутентифицировать пользователей с помощью ключей API. Я не уверен, если возможно войти в систему через синфонию через URL. Я пытаюсь разработать сервис, который разрешает вход в систему, и я хочу использовать URL-адрес, как это:

mysite.com/login/user/password/token

Прежде чем создавать полный код, я пытаюсь сделать тест и убедиться, что это работает, и я передаю свою переменную со значением в том же коде в контроллере:

$_username="user";
$_password="password";

$this->redirect($this->generateUrl('subscriber_login_check'));

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);
}

Когда я пытаюсь сделать это на контроллере, у меня появляется следующая ошибка:

Невозможно найти контроллер для пути «/ login_check /». Может быть, вы забыли добавить соответствующий маршрут в вашей конфигурации маршрутизации?

Я не знаю, нужно ли мне что-то еще в других файлах или это невозможно сделать.

Спасибо

1

Решение

Я могу найти решение для реализации моего имени входа с помощью URL-адреса, например: mysite.com/user/password.

Это код:

$path_info = $request->getPathInfo();
$router_parts = explode("/", $path_info);
$routerAux = $router_parts[1];
$routerAux2 = $router_parts[2];
if ($routerAux != ""){
$_username=$routerAux;
$user = $em->getRepository('myBundle:Entity')->findOneBy(array('field' => $_username));
if($user){
$token = new UsernamePasswordToken($user, $user->getPassword(), "public", $user->getRoles());
if($token){
if ($routerAux2  != ""){
$_password=$routerAux2;
$pass = $user->getPassword();
$pass1 ="";
$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$pass1 = $encoder->encodePassword($_password, $user->getSalt());
if($pass==$pass1){
$var= 1;
}
}
}
}
}
}
return $this->render('Bundle:Pages:page.html.twig',array('var'=>$var));
}

В основном, сервис реализуется путем отправки имя пользователя а также пароль по URL, и сначала найдите имя пользователя в моем база данных, тогда, если пользователь существует, получил пароль. Поскольку пароль зашифрован, приступил к шифрованию значения прошлого пароля URL. После того как зашифровано значение, выполняется сравнение между двумя значениями, чтобы вернуть значение true, если оба значения равны, и значение false, если они различны.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]