我对 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/