Failed user login on production server using Symfony framework (Authentication request could not be processed due to...)

29,251

Solution 1

UPDATE: Issue solved. The issue was that a table in the entity php file was named with upper case letters while the database table was named with lower case. +1 to ClémentBERTILLON for pointing in the right direction, namely prod.log

Solution 2

It looks like that the error:

Authentication request could not be processed due to a system problem.

is too generic and does not tell anything about where the problem is (there is an issue opened about this matter here).

I solved my issue by checking the logs and see what happened (in var/logs/dev.log), hoping this helps someone.

In my specific case, there was a wrong parameter in parameters.yml about database connection. But, again, the error is too generic and does not necessarily imply that the problem is related with database connection.

Solution 3

This problem can be fixed running command: php bin/console cache:clear --env=prod --no-debug

Solution 4

AS @ShinDarth mention it. It is too generic and log inspection will help people in our case to get throught this.

If it can help in my situation it was :

After an SonataUserBundle installation in SF3, I had to

bin/console doctrine:schema:update --force

My context is particular, I have had already installed and used FOSUserBundle before to install SonataUserBundle. (Because of SF3 compatibility with FOSUser/SonataUSer... Database have been taken 16 queries after that. Working great.

Solution 5

You probably used the template given by Symfony docs here :

{% if error %}
    <div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}

Which actually gives you this error message. The most simple and reliable way to fix this issue is to replace this line by the following :

<div class="alert alert-danger">{{ error }}</div>

Which will give you the full stack-trace for your error and (hopefully) help you debug your application. Don't forget to revert this before going to production!

Share:
29,251
Charalampos Hadjiantoniou
Author by

Charalampos Hadjiantoniou

Updated on July 05, 2022

Comments

  • Charalampos Hadjiantoniou
    Charalampos Hadjiantoniou almost 2 years

    I'm using Symfony for a project and I have been trying to get the login to work on production server with no success for the past 2 days. I keep getting the error

    Authentication request could not be processed due to a system problem.

    I have followed the guide here (http://symfony.com/doc/current/cookbook/security/entity_provider.html) to setup loading users from database.

    My security.yml file:

    security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        Acceptme\UserBundle\Entity\User: plaintext
    role_hierarchy:
        ROLE_SUPER_ADMIN:   [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
    
    providers:
        in_memory:
            memory:
                users:
                    patricia:
                        password: patricia
                        roles: 'ROLE_ADMIN'
        users:
            name: user_provider
            entity: { class: AcceptmeUserBundle:User, property: username }
    
    firewalls:
        user_area:
            pattern: ^/
            anonymous: ~
            provider: user_provider
            form_login:
                login_path: login_route
                check_path: _login_check
                default_target_path: homepage
        dev:
            pattern: ^/(_(profiler|wdt|error)|css|images|js)/
            security: false
    
        default:
                    anonymous: ~
                    http_basic: ~
    
    access_control:
            - { path: ^/admin, roles: ROLE_ADMIN }
    

    My SecurityController.php:

    namespace AppBundle\Controller;
    
    use Symfony\Component\HttpFoundation\Request;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
    use Symfony\Component\Security\Core\SecurityContext;
    
    class SecurityController extends Controller
    {
    /**
     * @Route("/login", name="login_route")
     * @Template("security/login.html.twig")
     */
    public function loginAction(Request $request)
    {
        if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
            $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
        } else {
            $error = $request->getSession()->get(SecurityContext::AUTHENTICATION_ERROR);
        }
    
        return array(
            'last_username' => $request->getSession()->get(SecurityContext::LAST_USERNAME),
            'error'         => $error,
        );
    }
    
    /**
     * @Route("/login_check", name="_login_check")
     */
    public function securityCheckAction()
    {
        // this controller will not be executed,
        // as the route is handled by the Security system
    }
    }
    

    I have tried uploading the project on 2 different web hosts (FatCow & GoDaddy) and the problem remains. Locally i am using PHP 5.4.19 (FatCow uses 5.3.2 and GoDaddy uses 5.4.37). Keep in mind that when working on localhost with XAMPP everything works fine!

    I've confirmed that PDO is enabled in both cases. I've confirmed that the database username, password and host are correct in the parameters.yml file. Error logs on both local and remote servers show nothing.

    I have followed all directions from this previous post Deploying Symfony2 app getting fosuserbundle errors and still no success.