共同作業のために 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']
私はそれを修正しようとします。