Catchable Fatal Error: Argument 4 passed to UsernamePasswordToken::__construct() must be an array, null given
authentication, php, symfony
Solution
Basically, what the error message says is:
The 4th argument for `UsernamePasswordToken::__construct()` should be an array, but it's `null`. It was called in `UserAuthenticationProvider` at line 96.
If you take a look at that code, you'll see that the 4th argument for `UsernamePasswordToken::__construct()` is `$roles`. So that should be an array, but it's getting `null` instead.
I'm guessing that you have written your own User entity, and that the `getRoles()` method of your user entity is returning `null` instead of an array of roles. So just change that method to something like this:
/**
* Returns the roles granted to the user.
*
* @return Role[] The user roles
*/
public function getRoles()
{
return array('ROLE_USER');
}
Of course, the actual code may differ (you might want to store the user roles in the database), as long as `getRoles()` returns an array of strings or Role objects.
Problem
I am getting the following error when logging in into my Symfony application (with correct username and password): ContextErrorException: Catchable Fatal Error: Argument 4 passed to Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() must be an array, null given, called in D:\xampp\htdocs\essweb\vendor\symfony\symfony\src\Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php on line 96 and defined in D:\xampp\htdocs\essweb\vendor\symfony\symfony\src\Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken.php line 36 Security.yml ``` firewalls: admin_area: pattern: ^/ anonymous: ~ form_login: login_path: / check_path: /login_check default_target_path: /user failure_path: / #username_parameter: username #password_parameter: password remember_me: true remember_me: key: "%secret%" lifetime: 31536000 path: / domain: ~ always_remember_me: true logout: path: /logout target: / ``` Updated: Login form: ``` <form class="form-signin form-group" action="{{ path('login_check') }}" method="post"> Username: <input type="text" class="form-control" name="_username" placeholder="Username" value="{{ last_username }}" required="required"> Password: <input type="text" class="form-control" name="_password" placeholder="" value="{{ last_username }}" required="required"> <button class="btn btn-sm btn-primary btn-block" type="submit">Sign in</button> ```