我正在使用symfony的投票来处理用户对我网站的访问。当用户未通过身份验证时,我收到错误:
Warning: get_class() expects parameter 1 to be object, string given
当用户访问调用投票者的页面时。选民中的代码是:
public function vote(TokenInterface $token, $object, array $attributes)
{
if (!$object || !$this->supportsClass(get_class($object))) {
return self::ACCESS_ABSTAIN;
}
...}
当对象='匿名'时,这是从Symfony网站获取的常规代码。我当然可以修改此代码以检查对象是否是对象,但我想知道这是否正常?我会跳到选民不会被召唤到一个非对象上。
编辑:SuportsClass 和 SupportsAttribute 也是默认的:
protected function getSupportedClasses()
{
return array(
'AppBundle'Entity'User'Associate',
);
}
protected function getSupportedAttributes()
{
return array(self::SELECT_ASSOCIATES, self::GRANT_RIGHTS, self::REMOVE_RIGHT, self::DISPLAY_RIGHTS);
}
当用户未登录,但访问控制允许匿名用户时,用户是一个字符串"anon.",而不是用户界面实例。
您应该在supportsClass
中打支票(例如 return is_object($objec);
(。