3

共同作業のために 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']

私はそれを修正しようとします。

4

1 に答える 1

4

のソースコードをAuthenticatedMiddlewareご覧ください。

と呼ばれる設定があることがわかりAUTHENTICATED_EXEMPT_URLSます。公開されたままの正規表現を含めることができます。settings.pyあなたの:でこのようなものに設定してください

AUTHENTICATED_EXEMPT_URLS = (r"^api/",)

これにより、/api/ログインしなくても以下のURLが利用可能になります。t

于 2010-01-21T19:43:23.863 に答える