我如何限制访问我的页面?交响乐2
How can i restrict acces in my page? Symfony2
我的问题是:我需要限制对来自其他国家(例如日本)的人的访问。我这样做是为了让日本的任何人都无法访问我的网站?
您将必须检测用户的 IP,如果 IP 来自日本,则将用户重定向到错误页面。
这里有一个很好的检测用户 IP 的包:
https://github.com/aferrandini/Maxmind-GeoIp
要一次阻止所有页面,您可以在定义了 onKernelRequest 方法的 Listner 中进行 IP 检查。此处可见示例:
http://symfony.com/doc/2.3/cookbook/service_container/event_listener.html#request-events-checking-types
不要忘记在每个包中可用的 services.yml 文件中注册侦听器。
检测日本用户的另一种方法是解析从浏览器收到的用户代理并对其进行解析,它可能包含 "ja" 或 "JP" 作为语言标记。
使用http://ipinfo.io/API。代码如下所示:(PHP)
$allowed_countries = array("IN", "US", ...);
$country = file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country");
if(!in_array($country, $allowed_countries))
{
echo 'Restricted'; //or any error message.
}
我的问题是:我需要限制对来自其他国家(例如日本)的人的访问。我这样做是为了让日本的任何人都无法访问我的网站?
您将必须检测用户的 IP,如果 IP 来自日本,则将用户重定向到错误页面。
这里有一个很好的检测用户 IP 的包:
https://github.com/aferrandini/Maxmind-GeoIp
要一次阻止所有页面,您可以在定义了 onKernelRequest 方法的 Listner 中进行 IP 检查。此处可见示例: http://symfony.com/doc/2.3/cookbook/service_container/event_listener.html#request-events-checking-types
不要忘记在每个包中可用的 services.yml 文件中注册侦听器。
检测日本用户的另一种方法是解析从浏览器收到的用户代理并对其进行解析,它可能包含 "ja" 或 "JP" 作为语言标记。
使用http://ipinfo.io/API。代码如下所示:(PHP)
$allowed_countries = array("IN", "US", ...);
$country = file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country");
if(!in_array($country, $allowed_countries))
{
echo 'Restricted'; //or any error message.
}