如何检查用户是否使用Django中间件从美国境外登录

时间:2012-12-10 21:15:39

标签: django

我是Django的新手,想知道如何检查登录django网站的用户是否来自美国境外?

我如何在Middleware中编写一个类来检查它?我希望隐藏退出美国的用户隐藏网站的特定部分。

我知道我没有提供任何细节,这个问题可能看起来很模糊......但我需要一个大致的想法才能开始。我还没有开始在网站上工作。

我浏览了Django Middleware文档,但仍然不明白该怎么做。 用户身份验证https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users是否提供此类功能?

1 个答案:

答案 0 :(得分:3)

您可以使用GeoIP module included with django

一个简单的中间件看起来像这样:

class GeoLocationMiddleware:
    def process_request(self, request):
        if 'geoip_check' not in request.session:
            g = GeoIP()
            country = g.country(request.META.get('REMOTE_ADDR'))
            do_something(country) #Do something with country result.
            request.session['geoip_check'] = True #Could store country result

        return None

你会注意到我在会话中添加了一个标志。在每个请求上检查GeoIP是不必要的,对性能有害,所以我们每次会话只检查一次。 希望这是你想要的。

编辑: 如果您只想为登录用户执行此操作,请将其放在那里:

if request.user.is_authenticated():

一开始。