小编Bay*_*tch的帖子

有条件的nginx auth_request

我想让我的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)

nginx auth-request

5
推荐指数
1
解决办法
1255
查看次数

XML在python中行走

我是python新手,想了解解析xml。我还没有找到关于如何创建通用程序以遍历XML节点集的出色示例或说明。

我希望能够通过名称和值来分类和标识所有元素和属性,而无需任何有关xml模式的信息。我不想依靠标记名称或文本来专门调用元素和属性。

有人能指出我正确的方向吗?

谢谢

更新:

提出的具体问题是:“我通常如何在不了解任何架构的情况下从XML文档中的根节点中递归所有节点”。

那时,由于是python的新手,并且了解如何以许多其他语言执行该操作,因此,我对不依赖命名节点遍历DOM的任何现实示例感到困惑,这根本不是我想要的。

希望这可以澄清问题,因为该线程中的信息确实有用。

python xml lxml elementtree

4
推荐指数
2
解决办法
4424
查看次数

Sparql属性过滤器

为了知道如何正确地制作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)的团队,而我真的很困惑如何发现实际的查询前缀应该是什么.

rdf semantic-web sparql dbpedia

3
推荐指数
1
解决办法
796
查看次数

如何操作 nginx 变量字符串

我正在尝试操作 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)

nginx nginx-location

2
推荐指数
1
解决办法
6141
查看次数

从复杂字典中导出唯一且有序的列表

我有一个嵌套的元组列表,我需要突破到一个列表并删除每个元组的第一个序列.我似乎无法弄清楚如何实现这一目标.

我有样本数据,例如:

[[('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)

python list unique

1
推荐指数
1
解决办法
86
查看次数

python 2.7中的继承

我正在尝试构建一个用于解析非常特定的文本结构的框架.我正在处理的结构很丰富,并且具有已知的模式,类似于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

python oop inheritance python-2.7

1
推荐指数
1
解决办法
272
查看次数

将此perl替换转换为python

我试图将一些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 regex perl python-2.7

0
推荐指数
1
解决办法
90
查看次数