Я новичок в symfony, и я пытаюсь создать свою собственную аутентификацию. (У меня есть внешняя система аутентификации, поэтому я объявил свой класс User и UserProvider) Я настроил некоторые маршруты, контроллеры и безопасность yml, но когда я отправляю форму входа, я получаю сообщение об ошибке
Для доступа к этому ресурсу требуется полная аутентификация.
Вот мой конфиг для безопасности:
security:
encoders:
App\Domain\User\ValueObject\User: bcrypt
providers:
UserProvider:
id: App\Providers\UserProvider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/login
anonymous: ~
login_others:
pattern: ^/login/.*$
anonymous: ~
register:
pattern: ^/register.*$
anonymous: ~
bye:
pattern: ^/bye
anonymous: ~
main:
provider: UserProvider
pattern: ^/.*
form_login:
# submit the login form here
check_path: user.login.check
# the user is redirected here when they need to log in
login_path: /login
logout:
path: /logout
target: /login
invalidate_session: false
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login/.*$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register.*$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/bye$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/.+$, roles: ROLE_USER }
И мой контроллер для маршрутов выглядит так:
class LoginController extends Controller
{
/**
* @param AuthenticationUtils $authUtils
* @param TokenStorageInterface $tokenStorage
* @return Response
*
* @Route("/login", name="user.login", methods="GET")
*/
public function loginAction(
AuthenticationUtils $authUtils,
TokenStorageInterface $tokenStorage
) {
if (!is_null($tokenStorage->getToken()) && in_array('ROLE_USER', $tokenStorage->getToken()->getRoles())) {
return $this->redirect($this->generateUrl('dashboard'));
}
$error = $authUtils->getLastAuthenticationError();
$lastUsername = $authUtils->getLastUsername();
return $this->render('user/login.twig', [
'error' => $error,
'last_username' => $lastUsername,
]);
}
/**
*
* @Route("/login_check", name="user.login.check", methods={"POST"})
*/
public function loginCheckAction()
{
}
Любая идея, что я делаю неправильно? Я почти уверен, что это проблема конфигурации, но, похоже, я этого не понимаю.
- { path: ^/login_check$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
, я получу сообщение об ошибке Контроллер должен вернуть ответ (нуль задан). - person Adrian Modliszewski   schedule 26.03.2018