我想让我的nginx代理仅在客户端尚未通过身份验证时才执行身份验证的子请求。条件部分是我被困住的地方。如何设计配置,以便每个会话仅对客户端进行一次身份验证?
我能够成功执行对Apache的auth_request并拉回要传递给后端的标头,但这在每个请求中都会发生,并且代价很高。
在此处的示例中,我的目标是仅在“ Authorization”标头丢失或为空或包含令牌的cookie时才执行auth_request
# DEFAULT BACKEND
location / {
proxy_pass_request_body off;
if ($http_authorization ~* '')
{
rewrite ^(.*)$ /__login;
}
if ($user !~* "([aa-zZ]+)@example.com")
{
}
if ($http_cookie !~* "(auth_cookie=([aa-zZ]+)@example.com)")
{
add_header Set-Cookie "auth_cookie=$user;domain=.example.com;Max-Age=3000";
}
proxy_pass_header x-webauth-user;
proxy_pass_header Set-Cookie;
proxy_pass http://example.com:6762/;
}
Run Code Online (Sandbox Code Playgroud)
位置/ __ login {内部;
auth_request /auth;
auth_request_set $user $upstream_http_x_webauth_user;
set $xuser $user;
add_header Auth-User $user;
proxy_set_header User-Name $user;
proxy_set_header Authorization $http_authorization;
#proxy_pass_header x-webauth-user;
#proxy_pass_header Set-Cookie;
proxy_pass http://example:6762/;
access_log /etc/nginx/login_debug.log;
}
location = /auth{
internal;
proxy_pass http://example.com:81/;
proxy_pass_request_body …Run Code Online (Sandbox Code Playgroud) 我是python新手,想了解解析xml。我还没有找到关于如何创建通用程序以遍历XML节点集的出色示例或说明。
我希望能够通过名称和值来分类和标识所有元素和属性,而无需任何有关xml模式的信息。我不想依靠标记名称或文本来专门调用元素和属性。
有人能指出我正确的方向吗?
谢谢
更新:
提出的具体问题是:“我通常如何在不了解任何架构的情况下从XML文档中的根节点中递归所有节点”。
那时,由于是python的新手,并且了解如何以许多其他语言执行该操作,因此,我对不依赖命名节点遍历DOM的任何现实示例感到困惑,这根本不是我想要的。
希望这可以澄清问题,因为该线程中的信息确实有用。
为了知道如何正确地制作sparql查询,如何弄清楚本体属性关系是什么?
例如,如果我想要赢得世界系列赛的棒球大联盟球队.
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia: <http://dbpedia.org/resource/>
PREFIX owl: <http://dbpedia.org/ontology/>
PREFIX db: <http://dbpedia.org/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#broader/>
PREFIX category: <http://dbpedia.org/resource/Category:>
PREFIX purl: <http://purl.org/dc/terms/>
PREFIX ps: <http://purl.org/dc/terms/subject/>
select distinct *
where {
?team rdf:type owl:BaseballTeam .
{ ?team rdf:type yago:MajorLeagueBaseballTeams . }
#{ ?team dbprop:champion dbpedia:Major_League_Baseball }
}
Run Code Online (Sandbox Code Playgroud)
如果我取消注释查询中的最后一行,我得不到任何结果.查看:http://dbpedia.org/page/Boston_Red_Sox
我知道了:
is dbpprop:champion of dbpedia:American_League
Run Code Online (Sandbox Code Playgroud)
我不确定如何构建语法来仅过滤已赢得世界系列赛(Champion)的团队,而我真的很困惑如何发现实际的查询前缀应该是什么.
我正在尝试操作 nginx 变量。
我有一个变量名称 $user,其中包含一个 UPN,例如某人@example.com 我想设置另一个变量 $xuser;成为 $user 减去 @domain - 即某人。
这是在位置块中完成的,所以我认为我不能使用地图。
我已经尝试过这个,但 $xuser 似乎从未被设置:
if ($user ~* "(?<p>[aa-zZ]+)@example.com")
{
set $xuser $p;
}
Run Code Online (Sandbox Code Playgroud) 我有一个嵌套的元组列表,我需要突破到一个列表并删除每个元组的第一个序列.我似乎无法弄清楚如何实现这一目标.
我有样本数据,例如:
[[('Item 1', <__main__.J object at 0x1018fc690>), ('Item 2', <__main__.J object at 0x1018fc6d0>)]]
Run Code Online (Sandbox Code Playgroud)
而我正试图减少它
[<__main__.J object at 0x1018fc690>, <__main__.J object at 0x1018fc6d0>]
Run Code Online (Sandbox Code Playgroud)
有人可以指出我正确的方向.我试过itertools和zip(*)无济于事.
import itertools
import operator
class J(object):
pass
w = J()
w.Type = 'Item 1'
w.Page = 35
w.Fragment = 'AA'
q = J()
q.Type = 'Item 2'
q.Page = 78
q.Fragment = 'BA'
z = [[('Item 1', w),('Item 2', q)]]
y = [b for b in z]
print y
result = ([ a for a,b in …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个用于解析非常特定的文本结构的框架.我正在处理的结构很丰富,并且具有已知的模式,类似于xml.我正在尝试构建一个框架来进行解析.该文本有各个部分,我预计将来会添加更多部分代码.为了补偿,我试图建立一系列衍生的分类,可以根据需要换入或换出.
我认为一切都按计划进行,直到我开始编写第一个派生类.基类有一些功能__init__,我期望在所有具体派生类中免费获得.然而,情况似乎并非如此.
这是一个简单的例子来说明我的问题:我希望输出为:
['memberA','memberB','memberC'],['DerivedA','DerivedB','DerivedC']
class base(object):
def __init__(self):
members = [attr for attr in dir(self) if not callable(attr) and not attr.startswith("__")]
print members
class test(base):
def __init__(self):
self.memberA = None
self.memberB = None
self.memberC = None
class test2(test):
def __init__(self):
self.DerivedA = None
self.DerivedB = None
self.DerivedC = None
t = test()
t2 = test2()
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下,为什么打印功能无法正常工作?
编辑:根据以下答案:我现在有这个问题:
如果base .__ init(self)看起来像是这样的:
class base(object):
def __init__(self, text):
Run Code Online (Sandbox Code Playgroud)
我必须将派生类定义为:
class test(base):
def __init__(self, text):
base.__init__(self, text)
Run Code Online (Sandbox Code Playgroud)
我希望至少免费获得参数对象referance
我试图将一些perl代码移植到python.不熟悉perl是一个挑战,但我已经完成了大部分工作.然而,有一个函数执行单词替换,我不知道是否有一个直接的python equivelent.
$my_string =~ s/^(.*?) \(The\)$/The $1/;
$my_string=~ s/\bL\.? ?L\.? ?C\.?\b//;
$my_string =~ s/[(),]//g;
Run Code Online (Sandbox Code Playgroud)
我想我可以使用如下的东西:
re.sub('s/^(.*?) \(The\)$', '$/The 1/', my_string)
Run Code Online (Sandbox Code Playgroud)
对于第一个样本,但我对其他人一无所知.
感谢您的任何见解.
python ×4
nginx ×2
python-2.7 ×2
auth-request ×1
dbpedia ×1
elementtree ×1
inheritance ×1
list ×1
lxml ×1
oop ×1
perl ×1
rdf ×1
regex ×1
semantic-web ×1
sparql ×1
unique ×1
xml ×1