1

我正在使用 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;
}
...}

当对象 = 'anon.' 这是取自 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);
}
4

1 回答 1

1

当用户未登录,但访问控制允许匿名用户时,用户为字符串“anon”。而不是 UserInterface 实例。

您应该检查supportsClass(例如return is_object($objec);)。

于 2014-12-22T01:06:37.033 回答