警告:get_class()期望参数1为object,给定字符串

时间:2014-12-21 21:01:15

标签: php security symfony object symfony-security

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

1 个答案:

答案 0 :(得分:1)

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

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