[英]zend db error on switching tables Catchable fatal error: Argument 1 passed to __construct() must be an array, object given, called in
[英]Catchable Fatal Error: Argument 4 passed to UsernamePasswordToken::__construct() must be an array, null given
登录到我的Symfony应用程序时(使用正确的用户名和密码),我收到以下错误:
ContextErrorException:可捕获的致命错误:传递给Symfony \\ Component \\ Security \\ Core \\ Authentication \\ Token \\ UsernamePasswordToken :: __ construct()的参数4必须是一个数组,给定null,在D:\\ xampp \\ htdocs \\ essweb \\ vendor \\ symfony中调用第96行的\\ symfony \\ src \\ Symfony \\ Component \\ Security \\ Core \\ Authentication \\ Provider \\ UserAuthenticationProvider.php,在D:\\ xampp \\ htdocs \\ essweb \\ vendor \\ symfony \\ symfony \\ src \\ Symfony \\ Component \\ Security \\ Core中定义\\ Authentication \\ Token \\ UsernamePasswordToken.php第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: /
更新:
登录表格:
<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>
基本上,错误消息的内容是:
UsernamePasswordToken::__construct()
的第四个参数应该是一个数组,但它是null
。 它在第96行的UserAuthenticationProvider
中调用。
如果您查看该代码,您将看到UsernamePasswordToken::__construct()
的第4个参数是$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对象,实际代码可能会有所不同(您可能希望将用户角色存储在数据库中)。
我修复此错误,以便返回角色:
public function getRoles()
{
return $this->roles->toArray();
}
此错误正在捕获,因为角色属性当前提供的值为null,但是您必须为其提供一组角色,因此要解决它只返回角色propoerty:
public function getRoles()
{
return $this->roles;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.