【发布时间】:2010-01-21 17:04:30
【问题描述】:
我出于协作目的运行 Pinax 站点。我将 'account.middleware.AuthenticatedMiddleware' 添加到 'MIDDLEWARE_CLASSES' 以不允许匿名访问网站上的任何内容。
但现在我需要启用公共 API。除了在所有仍需要私有的视图中添加“login_required”装饰器之外,还有其他解决方案吗?
编辑 Gregor Mü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']
我会努力解决的。
【问题讨论】: