Мне нужно, что бы авторизованный юзер не мог зайти на страницу авторизации и при попытке его кидало в кабинет. Сначало налепил костылей в контроллере, а потом подумал о security и добавил там вот это
- { path: ^/fuck, roles: IS_AUTHENTICATED_ANONYMOUSLY }
Правильно ли я понимаю, что если юзер авторизован его туда пускать не должно? Вообщем не пашет, дайте хлебных крошек куда идти плиз.
Так как Security достаточно сложный механизм для понимания. Рекомендую прочесть введение в security на русском. По Вашему кейсу скажу, что вероятно Вам нужно построить традиционную форму входа в систему.
Но перед тем как реализовывать "сложный" механизм входа потренеруйтесь на "легком".
Итак, у вас уже есть Конфигурирование аутентификации ваших пользователей и, следующим шагом, Вам нужно добавить Конфигурирование загрузки пользователей. Для этого нужно добавить провайдера пользователя - это сервис либо описание ролей пользователя, в простой конфигурации нужно просто описать юзеров, записав роль и пароль. Так же необходимо добавить тип энкодинга, в нашем случае это plaintext
config/packages/security.yamlsecurity:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
in_memory:
memory:
users:
admin:
password: somepass
roles: 'ROLE_ADMIN'
# ...
Мы настроили провайдер и теперь переходим к авторизации, то есть нам нужно запреnить доступ, и самый простой способ это тот, который сейчас написан у Вас. В access_control
просто добавить
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/profile, roles: IS_AUTHENTICATED_ANONYMOUSLY }
то при неудачной авторизации будет возвращаться 403.
Для того что бы редиректить на определенный урл отправляется в раздел Как построить традиционную форму входа в систему.
И там описано, что нужно описать login_path
и check_path
security:
# ...
firewalls:
main:
anonymous: ~
form_login:
login_path: /some/login
check_path: some/login
А далее уже действуем по примеру и в контроллере где акшн логина необходимо добавить логику авторизации.
src/AppBundle/Controller/SecurityController.phppublic function loginAction(Request $request, AuthenticationUtils $authUtils)
{
$error = $authUtils->getLastAuthenticationError();
$lastUsername = $authUtils->getLastUsername();
return $this->render('security/login.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
Authorization Checker
Так же Вы можете реализовать проверку роли используя Authorization Checker. И в контроллере Вы проверяете
public function indexAction()
{
$isUserAnonymous = $this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_ANONYMOUSLY');
if ( $isUserAnonymous) {
return $this->redirectToRoute('profile');
}
}
Решение вопроса не очень сложное. Согласно документации, а именно вот здесь - https://symfony.com/doc/current/security.html
мы находим вот эту "роль"
IS_AUTHENTICATED_REMEMBERED: All logged in users have this, even if they are logged in because of a "remember me cookie". Even if you don't use the remember me functionality, you can use this to check if the user is logged in.
тут если что то не понятно, то речь идет о том что данная "роль" имеется у всех аунтифицированных пользователей, а это значит уже пол победы!
А вторую половину победы можно обеспечить двумя вариантами.
Простите что не очень подробно, мне показалось что вы поймете о чем я.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите во что объединить переменные что бы потом их отсортироватьПробовал смотреть на массивы многомерные, но вообще не понял что там...
Нужно получить значение дополнительного поля (Advanced Custom Fields)По итогу выдает только последний один массив в таком виде:
Есть сайт на wordpress, необходимо сделать расчет стоимости доставки в зависимости от расстояния и от суммы заказа(если покупатель набрал товаров...
при попытке использовать такую переменную - выдает undefined reference