这是一个django应用程序,将django用作dmz中前端设备/服务器和后端服务器之间的代理服务器
django-proxy-server的Python项目详细描述
#django_proxy_server
这是一个django应用程序,将django用作军事化区域内前端设备/服务器和后端服务器之间的代理服务器。可以使用django rest框架公开服务。为了标识自身,django代理服务器使用在"设置"中定义的secret_key变量作为其api密钥。
例如:
已安装的应用程序=(
…
"代理服务器",
)
您可以通过向settings.py添加以下内容并通过pip安装来获得django rest framework支持:
rest_framework_support=true
将以下选项添加到settings.py文件以进行配置:
proxy_api_keys=[
希望允许使用服务
需要API密钥。如果没有api密钥,则无法使用服务
]
#要使用的后端服务的IP或域地址
后端主机='127.0.0.1'
要使用后端服务的端口
后端端口='8000'
在中间件类设置的末尾添加以下中间件:
middleware\u classes=(
…
'proxy\u server.middleware.disablecsrf',
)
为了避免CSRF检查。
delete选项public表示服务将公开为public,
从传统的django视图或使用django作为代理服务器的外部设备。调用后端服务的函数依赖于helper函数generate_service_url。
generate_service_url函数允许将参数附加到url,如果kwarg encrypted设置为true(默认情况下,这是错误的)。
使用传统的django视图时,按如下方式调用服务:
从代理服务器。后端服务从代理服务器导入调用后端服务
。帮助程序导入生成服务url
def函数(请求):
…
状态,response=invoke_backend_service('get',generate_service_url('/get_user',params={username':'proxy_server_admin'},encrypted=true),请求=请求)
…
invoke_backend_服务接收以下参数:
*方法:要调用的服务的方法
*函数路径:服务url的路径
*json_data:包含服务主体内容的字典。默认值:空dict.
*请求:包含用户和头信息的django视图的请求
*response_token:指示是否需要响应令牌的布尔参数。默认情况下,服务在响应时需要一个标记。
*public:boolean参数表示f访问的服务是公共的。默认情况下,调用的服务不是公共的。
*secure:boolean参数,指示是否必须通过https建立web服务连接。默认情况下,连接是使用http创建的。
当使用django作为代理服务器时,按如下方式调用服务:
from proxy_server.decorators import expose_service
from proxy_server.helpers import generate_service_url
from proxy_server.backend_services importinvoke_backend_service_as_proxy
导入proxy_server
@expose_service(['get'])
def home(请求):
…
response=invoke_backend_service_as_proxy(请求,'get',生成服务URL('/get_user',params={'username':'proxy_server_admin'},加密=真)。secure=true)
…
invoke_backend_service_as_proxy接收以下参数:
*请求:包含用户和头信息的django视图的请求
*方法:要调用的服务的方法
*函数路径:服务的路径url
*json_data:包含服务正文内容的字典。默认值:空dict.
*response_token:指示是否需要响应令牌的布尔参数。默认情况下,服务在响应时需要令牌。
*secure:boolean参数,指示是否必须通过https建立web服务连接。默认情况下,连接是使用http创建的。
1。如果服务器响应是200或204,则响应被重定向(视图用服务器响应的精确副本进行响应)。
2。如果服务器响应与200或204不同,则响应具有以下结构:
{
"错误":{
"代码":500,
"类型":"proxyservererror",
"消息":错误消息
而第二个则使用django的httpresponse对象进行响应。
#如果服务器返回
"过期日期":"2014-09-09 10:41:54",则为用户令牌的过期日期。
"如果用户令牌不存在,这不表示响应的内容。此内容也可以是响应的数组
}
}
。状态代码!=200
{
'用户令牌':'abc',如果服务器返回
'到期日期':'2014-09-09 10:41:54',则为用户令牌的到期日期。
如果用户令牌不存在,则也不表示
"错误":{
"代码":500,或服务器发送的任何其他代码。这是特定于服务器的错误类型。这是特定于服务器的
"消息":"错误消息"
}
}
\将缓存设置设置为首选后端,并将"novtory_admin.middleware.authmidleware"添加到中间件类设置中,如下所示:
authentication_backend=(
"proxy_server.authentication.auth.proxyserverbackend",
caches={
'默认':{
'后端':'django.core.cache.backends.locmem.locmemcache',
}
}
s=(
…
'代理服务器.身份验证.中间件.代理服务器中间件',
)
目前,django代理服务器仅支持路径"/登录"下的登录web服务。它依赖于您可以通过authenticate kwargs传递登录web服务主体,如下所示:
platform=platform)
身份验证后端用户对象使用电子邮件作为用户名,用户名的base64编码作为id。用户pk被分配为后端服务器通过调用后端服务函数返回的令牌。
正确地说,登录web服务必须返回一个带有email、name和is-active键的json字典。不允许员工或超级用户使用。
这是一个django应用程序,将django用作军事化区域内前端设备/服务器和后端服务器之间的代理服务器。可以使用django rest框架公开服务。为了标识自身,django代理服务器使用在"设置"中定义的secret_key变量作为其api密钥。
例如:
已安装的应用程序=(
…
"代理服务器",
)
您可以通过向settings.py添加以下内容并通过pip安装来获得django rest framework支持:
rest_framework_support=true
将以下选项添加到settings.py文件以进行配置:
proxy_api_keys=[
希望允许使用服务
需要API密钥。如果没有api密钥,则无法使用服务
]
#要使用的后端服务的IP或域地址
后端主机='127.0.0.1'
要使用后端服务的端口
后端端口='8000'
在中间件类设置的末尾添加以下中间件:
middleware\u classes=(
…
'proxy\u server.middleware.disablecsrf',
)
为了避免CSRF检查。
delete选项public表示服务将公开为public,
从传统的django视图或使用django作为代理服务器的外部设备。调用后端服务的函数依赖于helper函数generate_service_url。
generate_service_url函数允许将参数附加到url,如果kwarg encrypted设置为true(默认情况下,这是错误的)。
使用传统的django视图时,按如下方式调用服务:
从代理服务器。后端服务从代理服务器导入调用后端服务
。帮助程序导入生成服务url
def函数(请求):
…
状态,response=invoke_backend_service('get',generate_service_url('/get_user',params={username':'proxy_server_admin'},encrypted=true),请求=请求)
…
invoke_backend_服务接收以下参数:
*方法:要调用的服务的方法
*函数路径:服务url的路径
*json_data:包含服务主体内容的字典。默认值:空dict.
*请求:包含用户和头信息的django视图的请求
*response_token:指示是否需要响应令牌的布尔参数。默认情况下,服务在响应时需要一个标记。
*public:boolean参数表示f访问的服务是公共的。默认情况下,调用的服务不是公共的。
*secure:boolean参数,指示是否必须通过https建立web服务连接。默认情况下,连接是使用http创建的。
当使用django作为代理服务器时,按如下方式调用服务:
from proxy_server.decorators import expose_service
from proxy_server.helpers import generate_service_url
from proxy_server.backend_services importinvoke_backend_service_as_proxy
导入proxy_server
@expose_service(['get'])
def home(请求):
…
response=invoke_backend_service_as_proxy(请求,'get',生成服务URL('/get_user',params={'username':'proxy_server_admin'},加密=真)。secure=true)
…
invoke_backend_service_as_proxy接收以下参数:
*请求:包含用户和头信息的django视图的请求
*方法:要调用的服务的方法
*函数路径:服务的路径url
*json_data:包含服务正文内容的字典。默认值:空dict.
*response_token:指示是否需要响应令牌的布尔参数。默认情况下,服务在响应时需要令牌。
*secure:boolean参数,指示是否必须通过https建立web服务连接。默认情况下,连接是使用http创建的。
1。如果服务器响应是200或204,则响应被重定向(视图用服务器响应的精确副本进行响应)。
2。如果服务器响应与200或204不同,则响应具有以下结构:
{
"错误":{
"代码":500,
"类型":"proxyservererror",
"消息":错误消息
而第二个则使用django的httpresponse对象进行响应。
#如果服务器返回
"过期日期":"2014-09-09 10:41:54",则为用户令牌的过期日期。
"如果用户令牌不存在,这不表示响应的内容。此内容也可以是响应的数组
}
}
。状态代码!=200
{
'用户令牌':'abc',如果服务器返回
'到期日期':'2014-09-09 10:41:54',则为用户令牌的到期日期。
如果用户令牌不存在,则也不表示
"错误":{
"代码":500,或服务器发送的任何其他代码。这是特定于服务器的错误类型。这是特定于服务器的
"消息":"错误消息"
}
}
\将缓存设置设置为首选后端,并将"novtory_admin.middleware.authmidleware"添加到中间件类设置中,如下所示:
authentication_backend=(
"proxy_server.authentication.auth.proxyserverbackend",
caches={
'默认':{
'后端':'django.core.cache.backends.locmem.locmemcache',
}
}
s=(
…
'代理服务器.身份验证.中间件.代理服务器中间件',
)
目前,django代理服务器仅支持路径"/登录"下的登录web服务。它依赖于您可以通过authenticate kwargs传递登录web服务主体,如下所示:
platform=platform)
身份验证后端用户对象使用电子邮件作为用户名,用户名的base64编码作为id。用户pk被分配为后端服务器通过调用后端服务函数返回的令牌。
正确地说,登录web服务必须返回一个带有email、name和is-active键的json字典。不允许员工或超级用户使用。