Я управляю Pinax-сайтом для совместных целей. Я добавил «account.middleware.AuthenticatedMiddleware» в «MIDDLEWARE_CLASSES», чтобы запретить анонимный доступ к чему-либо на сайте.
Но теперь мне нужно, чтобы публичные API были включены. Есть ли какие-то решения, кроме добавления 'login_required'-decorator во все представления, которые все еще должны быть приватными?
редактировать
Грегор Мюллеггер ответ не работает. 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']
Я постараюсь это исправить.