0
WSGIミドルウェアを使用してDjangoの保護されたビューにリクエストを認証するためのlogin_requiredデコレータを作成しようとしています。ここでデコレータ内でジェネレータコードを処理する方法は?
は私のコードです:
def login_required(f, request_class=HTTPRequest):
def _wrapper(*args, **kwargs):
if not isinstance(args[0], request_class):
req = request_class(environ=args[0])
else:
req = args[0]
wsgi_app = WSGIController()
settings = wsgi_app.settings
google_client = client.GoogleClient(
settings.OAUTH2_CLIENT_ID,
access_token=settings.OAUTH2_ACCESS_TOKEN,
scope='email',
redirect_url=settings.OAUTH2_REDIRECT_URL,
login_path="/session_login/")
wsgi_app = google_client.wsgi_middleware(wsgi_app, \
secret=settings.SECRET_KEY)
def process_middleware(environ, start_response):
return wsgi_app(environ, start_response)
response = process_middleware(req.environ, f)
return f(*args, **kwargs)
return _wrapper
は、どのように私はOAuthのログインページにユーザーをリダイレクトするために応答オブジェクト(発電機)を扱うことができますか?
アップデート:私は次のコードを追加する場合:
redirect = [item for item in response.next()]
をその後、私は次のエラーを取得する:
TypeError: unhashable type: 'list'
リダイレクトがWSGIミドルウェア経由でGoogle OAuthログインページに送信されるため、これは機能しません。 –