在我的网站上用Symfony 2开发我有一个捆绑来控制我的Raspberry Pi在家里进行一些自动化但网站是在线的,我想禁止访问这个捆绑给所有拥有公共IP的人,以隐藏链接我的菜单我在树枝上做这个:
{% if (app.request.server.get("REMOTE_ADDR") == '192.168') or (app.request.server.get("REMOTE_ADDR") == '127.0.0.1')%}
<li>
<a href="{{ path('admin_rpi_homepage') }}">administration RPI</a>
</li>
{% endif %}
但是我仍然可以通过键入所有路由的直接URL来访问,我怎么能修改它,我想如果在每个控制器中放置但看起来有点“沉重”
答案 0 :(得分:1)
您可以使用选民黑名单IP。
在此处创建您的选民:http://symfony.com/doc/current/cookbook/security/voters.html
在你的控制器中是这样的:
use Symfony\Component\Security\Acl\Domain\ObjectIdentity;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
...
public function indexAction() {
$securityContext = $this->get('security.context');
$objectIdentity = new ObjectIdentity('class', 'Vendor\Bundle\Class');
if (false === $securityContext->isGranted('VIEW', $objectIdentity)) {
return $this->redirect($this->generateUrl('_welcome'));
}
...
您的路线可以访问,但控制器会将请求发送出去并将其重定向到主页