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

标签 django

我对 Django 很陌生,想知道如何检查登录到 django 支持的网站的用户是否来自美国境外?

我将如何在中间件中编写一个类来检查相同的内容?我想对退出美国的用户隐藏网站的特定部分。

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

我浏览了 Django Middleware 文档,但仍然不明白该怎么做。
是否进行用户认证https://docs.djangoproject.com/en/1.4/topics/auth/#limiting-access-to-logged-in-users提供任何这样的功能?

最佳答案

您可以使用 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

您会注意到我在 session 中添加了一个标志。检查每个请求的 GeoIP 是不必要的,而且对性能不利,所以我们每个 session 只检查一次。
希望这就是你要找的。

编辑:
如果您只想为登录用户执行此操作,请将其放在那里:
if request.user.is_authenticated():

一开始。

关于django - 如何使用 Django 中间件检查用户是否已从美国境外登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809403/

相关文章:

用于学习 Django 的 Python 2.7 或 3.3

python - 如何从用户帖子/字符串中提取主题标签?

python - django - 如果提交的表单值为 X,则阻止表单提交

没有 amqp 服务器的 django-celery (rabbitmq)

Django 模型 - 每个父引用的子表元素的自动增量 id

python - Django-dbbackup : how to change backup file extension?

django - 自定义过滤器类中执行不必要的过滤器代码

python - 如何从 Django 应用程序创建一个轮子?

python - 获取django中日期时间字段差异的平均值

python - Django models.Model 父类(super class)