gpt4 book ai didi

django - 使用 Django 检查内部 IP

转载 作者:行者123 更新时间:2023-12-02 03:52:25 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,根据用户的 IP 地址是内部还是外部 IP 地址,该函数将返回 TrueFalse。我们希望内部用户能够看到更多的东西并拥有更多的访问权限。我们希望尽可能“便宜”地做到这一点。我知道如何查询通用 IP 并对元组使用条件逻辑。我想知道 Django 可以为我完成大部分工作吗?

示例:

if request.is_internal():
#Do Special Secret Internal Stuff Things!

我读过一些关于 Django 的 INTERNAL_IPS但它似乎只用于调试,不允许我调用它。我这样说有错吗?

最佳答案

最好的选择是创建一个 View 装饰器来检查远程地址,然后在远程地址不在 settings.INTERNAL_IPS 中时引发 403,如下所示:

import functools

from django.conf import settings
from django import http
from django.utils.decorators import method_decorator


def internal_or_403(view_func):
"""
A view decorator which returns the provided view function,
modified to return a 403 when the remote address is not in
the list of internal IPs defined in settings.
"""
@functools.wraps(view_func)
def wrapper(request, *args, **kwargs):
if not request.META['REMOTE_ADDR'] not in settings.INTERNAL_IPS:
return http.HttpResponseForbidden('<h1>Forbidden</h1>')
return view_func(request, *args, **kwargs)
return wrapper


class Internal(object):
"""
A mix-in for class based views, which disallows requests from
non-internal IPs.
"""
@method_decorator(internal_or_403)
def dispatch(self, *args, **kwargs):
return super(Internal, self).dispatch(*args, **kwargs)

关于django - 使用 Django 检查内部 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com