Symfony2检查用户是否可以访问Twig中的url

时间:2016-06-10 12:27:34

标签: php symfony security twig

Symfony2中是否有办法检查用户是否可以访问Twig模板中指定的URL?

这样的事情:

{% if user_has_access( '/some/url/to/access' ) %}
   <a href="{{ path( '/some/url/to/access' ) }}">You can come here</a>
{% endif %}

2 个答案:

答案 0 :(得分:2)

如果需要,可以为此创建自定义的Twig扩展名。

有关您可以在文档中找到的扩展程序的更多信息。

http://symfony.com/doc/current/cookbook/templating/twig_extension.html

Fox示例: 命名空间AppBundle \ Twig;

class AppExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('user_has_access', array($this, 'userHasAccess')),
        );
    }

    public function userHasAccess($user, $pathForCheck)
    {
        //your logic for check access. can returns true or false
        return true;
    }

    public function getName()
    {
        return 'app_extension';
    }
}

并在树枝模板中

{% if user_has_access(app.user, 'path/to/check') %}
{% endif %}

此代码可能有错误,因为它只是原型。

答案 1 :(得分:1)

像PawełBrzoski解释的那样,可以创建一个自定义树枝功能。

但在Symfony中,正确的方法是使用is_granted('ROLE_...')