登录我的 Symfony 应用程序(使用正确的用户名和密码)时出现以下错误:
ContextErrorException:可捕获的致命错误:传递给 Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() 的参数 4 必须是一个数组,给定 null,在 D:\xampp\htdocs\essweb\vendor\symfony 中调用\symfony\src\Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php 第 96 行,并在 D:\xampp\htdocs\essweb\vendor\symfony\symfony\src\Symfony\Component\Security\Core 中定义\Authentication\Token\UsernamePasswordToken.php 第 36 行
安全.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:
登录表单:
<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>
基本上,错误消息的内容是:
第 4 个参数为UsernamePasswordToken::__construct()应该是一个数组,但它是null
。它被称为UserAuthenticationProvider在第 96 行.
如果您查看该代码,您会看到第四个参数UsernamePasswordToken::__construct()
is $roles
。所以这应该是一个数组,但它越来越null
反而。
我猜你有编写您自己的 User 实体,并且getRoles()
您的用户实体的方法正在返回null
而不是一系列角色。所以只需将该方法更改为如下所示:
/**
* Returns the roles granted to the user.
*
* @return Role[] The user roles
*/
public function getRoles()
{
return array('ROLE_USER');
}
当然,实际的代码可能会有所不同(您可能希望将用户角色存储在数据库中),只要getRoles()
返回一个字符串数组或Role对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)