3
我为了协作目的运行Pinax站点。我将'account.middleware.AuthenticatedMiddleware'添加到'MIDDLEWARE_CLASSES',以便不允许匿名访问网站上的任何内容。如何将公共API添加到类似Intranet的网站?
但现在我需要启用公共API。除了在所有仍然需要隐私的视图中添加“login_required” - 装饰器之外,是否还有其他解决方案?
编辑 GregorMüllegger答案不起作用。 settings.AUTHENTICATED_EXEMPT_URLS似乎得到代码
class AuthenticatedMiddleware(object):
def __init__(self, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
if login_url is None:
login_url = settings.LOGIN_URL
self.redirect_field_name = redirect_field_name
self.login_url = login_url
self.exemptions = [
r"^%s" % settings.MEDIA_URL,
r"^%s" % settings.STATIC_URL,
r"^%s$" % login_url,
]
print "settings.AUTHENTICATED_EXEMPT_URLS ",settings.AUTHENTICATED_EXEMPT_URLS
if (settings.AUTHENTICATED_EXEMPT_URLS):
self.exemptions += settings.AUTHENTICATED_EXEMPT_URLS
print "settings.AUTHENTICATED_EXEMPT_URLS ",settings.AUTHENTICATED_EXEMPT_URLS
覆盖的地方没有打印我的设置,但这样的:
settings.AUTHENTICATED_EXEMPT_URLS ['^/account/signup/$', '^/account/password_reset', '^/account/confirm_email', '^/openid']
我会尝试修复它。
请看到我的编辑 – vikingosegundo 2010-01-21 20:55:24
你上述的'AUTHENTICATED_EXEMPT_URLS'的网址定义在“intranet_project”的默认设置中(请参阅此:http://github.com/pinax/pinax/blob/ddfd4b8cac714ffc30c73604e5399860210054f0/pinax/projects/intranet_project/settings.py#L199)。你可以附加你的网址(比如'r'api /'')。 *(提示:我经常搜索我的项目的整个代码库,通过'grep -r'或类似的东西找到这样的重新定义,这在大多数情况下都有帮助)* – 2010-01-22 10:50:05
我不认为覆盖默认蓝图是有用的,因为它会破坏更新循环。相反,我在'/apps/account/middleware.py'中更改了'豁免项' –
vikingosegundo
2010-01-22 18:59:38