Не могу залогиниться в symfony - PullRequest
0 голосов
/ 11 января 2019

Я совершенно новичок в Symfony и пытаюсь решить проблему с входом в систему. Я не могу это исправить, потому что я могу получить зарегистрированную пользовательскую информацию в том же Bundle, что AppBundle, но не могу получить это в других пакетах, таких как WebsiteBundle. Я попробовал пару методов из Интернета, но ничего не получалось. как этот

Вот мой метод входа в систему

public function login(Request $request)
    {
        $token = $request->get('token');

        $user = $this->getDoctrine()->getRepository(User::class)->findOneByToken($token);

        if (!($user instanceof User))
        {
            return new JsonResponse(['status' => 'error', 'message' => 'Incorrect username or password provided.']);
        }

        // Here, "website" is the name of the firewall in your security.yml
        $userToken = new UsernamePasswordToken($user, $user->getPassword(), "website", $user->getRoles());

        // For older versions of Symfony, use security.context here
        $this->get("security.token_storage")->setToken($userToken);
        $this->get('session')->set('_security_main', serialize($userToken));
        // Fire the login event
        // Logging the user in above the way we do it doesn't do this automatically
        $event = new InteractiveLoginEvent($request, $userToken);
        $this->get("event_dispatcher")->dispatch("security.interactive_login", $event);
        $this->get('session')->save();
        $this->addFlash('success', 'Login successful.');

        return new JsonResponse(['status' => 'ok', 'message' => 'Login successful.']);
    }

Консоль событий сообщает, что пользователь не вошел в систему. Смотрите скриншот.

enter image description here Ценю вашу помощь. Заранее спасибо.

Обновлено Ниже мое security.yml содержимое файла

# To get started with security, check out the documentation:
# http://symfony.com/doc/current/security.html
security:

    encoders:
      AppBundle\Entity\User: sha512
      AppBundle\Entity\Client: sha512
      AppBundle\Entity\Admin: sha512
      Symfony\Component\Security\Core\User\User: sha512

    # http://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
    providers:
        chain_provider:
                    chain:
                        providers: [api_user_provider, webservice, admin_provider]
        api_user_provider:
          entity:
            class: AppBundle:User
            property: token
        webservice:
          entity: 
            class: AppBundle:Client
            property: email
        admin_provider:
          entity: 
            class: AppBundle:Admin
            property: email



    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/(crm/|ajax/)
            anonymous: ~
            logout: 
                path: /crm/logout
                target: /crm/login/
            stateless: false

            # activate different ways to authenticate

            # http://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
            #http_basic: ~

            # http://symfony.com/doc/current/cookbook/security/form_login_setup.html
            form_login:
                login_path: /crm/login/
                check_path: /crm/login/
                failure_path_parameter: /crm/login/
                always_use_default_target_path: true
                default_target_path: /crm/loginRedirect/
                username_parameter: username
                password_parameter: password
                require_previous_session: false
            logout: true
            access_denied_url: access_denied

        api:
            pattern: ^/api/
            anonymous: ~
            guard:
                authenticators:
                    - app.token_authenticator
            stateless: false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...